【发布时间】:2022-03-16 21:43:15
【问题描述】:
我在 docker 容器中使用节点,并且在本地使用我的 IAM 密钥来创建、读取和删除文件到 S3 存储桶以及创建预签名的帖子。在 Fargate 容器上启动时,我创建一个 taskRole 并附加一个策略,使其能够完全访问 S3。
taskRole.attachInlinePolicy(
new iam.Policy(this, `${clientPrefix}-task-policy`, {
statements: [
new iam.PolicyStatement({
effect: iam.Effect.ALLOW,
actions: ['S3:*'],
resources: ['*'],
}),
],
})
);
有了这个角色,我可以毫无问题地创建、读取和删除 API 文件。但是,当 API 尝试创建预签名帖子时,我收到错误消息:
Error: Unable to create a POST object policy without a bucket, region, and credentials
我可以运行其他操作对我来说似乎非常奇怪,但它会因 presignedPOST 而失败,特别是因为我的 S3 操作都被允许。
const post: aws.S3.PresignedPost = await s3.createPresignedPost({
Bucket: bucket,
Fields: { key },
Expires: 60,
Conditions: [['content-length-range', 0, 5242880]],
});
这是我使用的代码。我正在记录存储桶和密钥,所以我很肯定它们是有效值。我的一个想法是在本地运行时,我将运行 aws.configure 来设置我的密钥,但在 Fargate 中我故意省略了这一点。我认为它获得了正确的密钥,因为其他 s3 操作正常工作。我接近这个了吗?
【问题讨论】:
标签: amazon-s3 amazon-iam aws-fargate