【问题标题】:serverless DeployCustomS31 Access point ARN region is empty无服务器 DeployCustomS31 接入点 ARN 区域为空
【发布时间】:2020-08-01 01:18:24
【问题描述】:

在某些时候将堆栈部署到 AWS 时出现错误,并且部署失败并回滚。在堆栈的控制台事件窗格中,Logical ID 字段中的第一个错误状态为FancyStuffCustomS31,原因是Failed to create resource. Access point ARN region is empty 和状态CREATE_FAILED

我没有像这样定义任何 S3 存储桶,所以我假设它是由无服务器框架创建的。于是我偷窥.serverless目录,得到如下sn-p:

"FancyStuffCustomS31": {
  "Type": "Custom::S3",
  "Version": 1,
  "DependsOn": [
    "FancyStuffLambdaFunction",
    "CustomDashresourceDashexistingDashs3LambdaFunction"
  ],
  "Properties": {
    "ServiceToken": {
      "Fn::GetAtt": [
        "CustomDashresourceDashexistingDashs3LambdaFunction",
        "Arn"
      ]
    },
    "FunctionName": "funstufftest-dev-FancyStuff",
    "BucketName": {
      "Fn::GetAtt": [
        "binRepo",
        "Arn"
      ]
    },
    "BucketConfigs": [
      {
        "Event": "s3:ObjectCreated:*",
        "Rules": []
      }
    ]
  }
},

(难怪我的 Lambda 函数叫FancyStuff

我猜它在某个时候会尝试创建一个访问该 S3 存储桶的访问点以上传代码,而不是指定 arn 中的区域,但并不确定。

尝试从头开始删除和重新创建堆栈、更改名称等。 目前我使用的唯一插件是serverless-sam。这些是我的版本:

$ sls version
Framework Core: 1.77.0
Plugin: 3.6.18
SDK: 2.3.1
Components: 2.33.0
$ npm version
{
  npm: '6.14.7',
  ares: '1.15.0',
  brotli: '1.0.7',
  cldr: '36.0',
  http_parser: '2.9.3',
  icu: '65.1',
  llhttp: '2.0.4',
  modules: '72',
  napi: '5',
  nghttp2: '1.40.0',
  node: '12.16.2',
  openssl: '1.1.1e',
  tz: '2019c',
  unicode: '12.1',
  uv: '1.34.2',
  v8: '7.8.279.23-node.34',
  zlib: '1.2.11'
}

【问题讨论】:

  • 能否将 serverless.yml 文件的内容添加到问题中?

标签: amazon-web-services amazon-s3 serverless-framework serverless


【解决方案1】:

解决方案比我想象的要简单(大惊喜):

1/ 仅指定存储桶名称,名称上根本没有任何 arn 修饰,没有接入点等。

2/ 在 serverless.yml 文件顶部的 provider 部分中添加部署 lambda 的区域。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-19
    • 1970-01-01
    • 2013-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多