【问题标题】:How to configure S3 for Amazon Skill Flow Builder如何为 Amazon Skill Flow Builder 配置 S3
【发布时间】:2019-08-19 03:29:51
【问题描述】:

我通过亚马逊的新 Skill Flow BuilderASK CLI 工具成功部署了我的技能。

abcConfig 文件中,可以选择添加S3 存储桶以用于 Polly 服务。我创建了一个存储桶并设置了权限,因此它是公开可用的。我相信这样做是正确的,但是很难判断 lambda 函数是否正在查找存储桶并使用它。当我测试 lambda 时,它会显示它使用配置中的这些设置构建的 URL:

"s3-domain-name": "s3.amazonaws.com",
"s3-bucket-name": "<BUCKET NAME>",

...但在设备上找不到音频文件。我认为这是因为它不是该文件的正确公共 URL。

那么,我的问题是,域名的正确格式是什么,以确保它访问我创建的存储桶?

更新

加载 Lambda 测试返回的 URL 时出现此错误:

<Error>
<Code>PermanentRedirect</Code>
<Message>
The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.
</Message>
<Endpoint>**********.s3.eu-west-2.amazonaws.com</Endpoint>
<Bucket>**********</Bucket>
<RequestId>6FBBDF******DC89</RequestId>
<HostId>
i7op6+RMyiHAcf*********LW58FSOKIily2ouNg3L/bp8IV0=
</HostId>
</Error>

更新更新 我在 Lambda 角色策略屏幕中发现了这个警告:

这表明它无法在 S3 存储桶中创建对象(因此读取 URI 时出错)。

不幸的是,当我编辑策略以允许对象资源时,我收到此错误:

【问题讨论】:

    标签: amazon-web-services amazon-s3 lambda alexa alexa-skills-kit


    【解决方案1】:

    我修好了。 Amazon Skill Builder 文档不正确。当您为 SFB Lambda 帐户设置策略时,您需要确保为其提供 "s3:PutObjectAcl" 操作以及标准 "s3:PutObject"

    您还需要告知政策您允许它在 S3 存储桶中创建对象。由于 AWS UI 错误(见上文),这是我必须手动创建的策略 JSON 文件:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "VisualEditor0",
                "Effect": "Allow",
                "Action": [
                    "dynamodb:CreateTable",
                    "polly:SynthesizeSpeech",
                    "dynamodb:PutItem",
                    "dynamodb:DeleteItem",
                    "dynamodb:GetItem"
                ],
                "Resource": "*"
            },
            {
                "Sid": "VisualEditor1",
                "Effect": "Allow",
                "Action": [
                    "s3:PutObject",
                    "s3:PutObjectAcl",
                    "s3:GetObject"
                ],
                "Resource": "arn:aws:s3:::<BUCKET_NAME>/*"
            }
        ]
    }
    

    使用此策略,您的 lambda 函数可以使用 Polly 服务,创建 MP3 文件并将其上传到您的 S3 存储桶中,如果您将存储桶设置为允许公共访问,则设备可以将它们播放给任何公众成员。

    【讨论】:

      猜你喜欢
      • 2020-02-06
      • 1970-01-01
      • 2020-02-27
      • 2016-08-26
      • 1970-01-01
      • 2012-06-27
      • 2013-01-07
      • 2014-11-09
      • 1970-01-01
      相关资源
      最近更新 更多