首页 > 解决方案 > 无服务器 DeployCustomS31 接入点 ARN 区域为空

问题描述

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

我没有像这样定义任何 S3 Bucket,所以我假设它是由无服务器框架创建的。所以我窥视了.serverless目录并得到以下代码段:

"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'
}

标签: amazon-web-servicesamazon-s3serverless-frameworkserverless

解决方案


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

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

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


推荐阅读