首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >“错误发生时,GetObject. S3错误代码: PermanentRedirect. S3错误消息:桶位于此区域:us 1

“错误发生时,GetObject. S3错误代码: PermanentRedirect. S3错误消息:桶位于此区域:us 1
EN

Stack Overflow用户
提问于 2021-11-28 15:29:10
回答 1查看 2.7K关注 0票数 1

我试着遵循这个研讨会的https://gitflow-codetools.workshop.aws/en/,每件事都很好,但是当我尝试使用cloudformation创建lambda时,我得到了一个错误:

代码语言:javascript
运行
复制
Resource handler returned message: "Error occurred while GetObject. S3 Error Code: 
  PermanentRedirect. S3 Error Message: The bucket is in this region: 
  us-east-1. Please use this region to retry the request (Service: Lambda, 
  Status Code: 400, Request ID: xxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxxx, 
  Extended Request ID: null)" (RequestToken: xxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxxx, HandlerErrorCode: InvalidRequest)

我使用的是eu-west-1,但我不明白为什么cloudformation在us-east-1中创建桶。

当我在美国-东方-1部署cloudformation时,我不会看到这个错误。

知道该如何避免这个错误吗?

模板如下所示:

代码语言:javascript
运行
复制
AWSTemplateFormatVersion: '2010-09-09'
Resources:
  LambdaRole:
    Type: 'AWS::IAM::Role'
    Properties:
      AssumeRolePolicyDocument:
        Version: 2012-10-17
        Statement:
          - Effect: Allow
            Principal:
              Service:
                - lambda.amazonaws.com
            Action: 'sts:AssumeRole'
      Path: /
      ManagedPolicyArns:
        - arn:aws:iam::aws:policy/IAMFullAccess
        - arn:aws:iam::aws:policy/AWSLambda_FullAccess
        - arn:aws:iam::aws:policy/AWSCodeCommitReadOnly
        - arn:aws:iam::aws:policy/AWSCodePipelineFullAccess
        - arn:aws:iam::aws:policy/CloudWatchEventsFullAccess
        - arn:aws:iam::aws:policy/AWSCloudFormationFullAccess
  PipelineCreateLambdaFunction:
    Type: 'AWS::Lambda::Function'
    Properties:
      FunctionName: 'gitflow-workshop-create-pipeline'
      Description: 'Lambda Function to create pipelines on branch creation'
      Code:
        S3Bucket: 'aws-workshop-gitflow'
        S3Key: 'pipeline-create.zip'
      Handler: 'pipeline-create.lambda_handler'
      Runtime: 'python3.7'
      Role:
        Fn::GetAtt:
          - LambdaRole
          - Arn
  PipelineCreateLambdaPermission:
    Type: 'AWS::Lambda::Permission'
    DependsOn: PipelineCreateLambdaFunction
    Properties:
      Action: 'lambda:InvokeFunction'
      Principal: "codecommit.amazonaws.com"
      FunctionName: 'gitflow-workshop-create-pipeline'
  PipelineDeleteLambdaFunction:
    Type: 'AWS::Lambda::Function'
    Properties:
      FunctionName: 'gitflow-workshop-delete-pipeline'
      Description: 'Lambda Function to delete pipelines on branch deletion'
      Code:
        S3Bucket: 'aws-workshop-gitflow'
        S3Key: 'pipeline-delete.zip'
      Handler: 'pipeline-delete.lambda_handler'
      Runtime: 'python3.7'
      Role:
        Fn::GetAtt:
          - LambdaRole
          - Arn
  PipelineDeleteLambdaPermission:
    Type: 'AWS::Lambda::Permission'
    DependsOn: PipelineDeleteLambdaFunction
    Properties:
      Action: 'lambda:InvokeFunction'
      Principal: "codecommit.amazonaws.com"
      FunctionName: 'gitflow-workshop-delete-pipeline'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-28 16:53:16

First things first、Lambda和S3需要位于同一个区域。

其次,看起来您不是桶所有者(您还没有通过查看模板来创建桶)。

这意味着,用来从is检索Lambda源代码的桶(我想来自车间),他们决定在我们东部的地区创建这个桶。强制您也部署您的堆栈在地区美国-东-1(如果你想跟随车间)。

,但是如果您真的想将这个堆栈部署到eu-west-1?中呢?

这意味着您需要在eu-west-1区域中创建一个桶,并将这些对象从车间桶中复制到您新创建的桶中,并更新您的CloudFormation模板以指向和检索新创建的桶中的Lambda源代码(注意,您可能需要将桶命名为不同的名称,因为桶名是全局共享的)。

我希望这是有点清楚。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70144855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档