2

我们正在使用 AWS MediaConverter 将视频转换为 mp4 格式。但是 MediaConvrter 在工作中给出了这个错误:

Unable to write to output file [s3://{path_to_file}]: [Failed to write data: Access Denied]

显然,MediaConverter 没有对 bucker 的写访问权限,但我不知道如何授予它们。

我们对 S3 有以下政策:

{
    "Version": "2008-10-17",
    "Id": "PolicyForCloudFrontPrivateContent",
    "Statement": [
        {
            "Sid": "1",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::{CloudFront-origin}"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::{S3-bucket}/*"
        },
        {
            "Sid": "2",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::{role-for-our-API}",
                    "arn:aws:iam::{MediaConverter-role}"
                ]
            },
            "Action": "*",
            "Resource": "arn:aws:s3:::{S3-bucket}/*"
        }
    ]
}

我们的 ACL 仅为 Bucket Owner 提供写入、列表权限。以前每个人都可以列出和写入对象并且 MediaConverter 工作,但我们发现我们不能接受每个人的列出和写入权限。

每个点都关闭了阻止公共访问。

我们用于 API 的 IAM 用户和用于 MediaConverter 的角色拥有 S3 (AmazonS3FullAccess) 的所有权限。

感谢任何帮助,谢谢。

4

4 回答 4

0

我有同样的问题。我使用的是我修改过的默认 MediaConvert 角色,它没有我想要做的事情的权限。

因此,我为 MediaConvert 创建了一个新角色。

命名它MediaConvertRole

政策

注意:点击“附加政策”按钮,这些是亚马逊提供的预制政策。您不必自己从头开始创建这些。

  1. AmazonS3FullAccess

谁的政策看起来像这样:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:*",
                "s3-object-lambda:*"
            ],
            "Resource": "*"
        }
    ]
}
  1. AmazonAPIGatewayInvokeFullAccess

谁的政策看起来像这样:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "execute-api:Invoke",
                "execute-api:ManageConnections"
            ],
            "Resource": "arn:aws:execute-api:*:*:*"
        }
    ]
}

创建 MediaConvert 作业时,请确保选择正确的角色:

mediaconvert 角色选择

于 2021-12-02T22:23:03.697 回答
0

我想确保您已在 Mediaconvert 作业设置中将AccessControl设置为BUCKET_OWNER_FULL_CONTROL 。听起来这不是在作业设置中设置的,因为存储桶需要使用存储桶所有者完全控制 ACL 设置对象。

可以在目标设置下的所有输出组设置下找到设置。

"DestinationSettings": {
              "S3Settings": {
              "AccessControl": {
              "CannedAcl": "BUCKET_OWNER_FULL_CONTROL"
            }
          }

问候迈克尔

于 2020-12-22T04:35:54.867 回答
0

@uliaadamchuk 尝试创建一个新角色(例如:媒体转换器)并将角色 ARN 添加到作业设置:

第 1 步:转到 IAM 角色 > 创建角色 > 查找 MediaConverter 并附加AmazonS3FullAccessAmazonAPIGatewayInvokeFullAccess(可选)策略或使用下面的 JSON 版本:

媒体转换器 两个策略附加 创建角色

 {
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": "*"
        }
    ]
}

AmazonS3FullAccess

第 2 步:在媒体转换器作业设置 > 设置 > 添加 IAM 角色> 添加角色 ARN:ex- "arn:aws:iam::741xxxxxx:role/media-converter"

第 3 步:创建工作并检查它现在是否工作!

于 2020-12-16T13:17:26.530 回答
0

我相信配置应该如下。请注意缺少顶级存储桶的“操作”和“资源”中的更改。

{
            "Sid": "2",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::{role-for-our-API}",
                    "arn:aws:iam::{MediaConverter-role}"
                ]
            },
            "Action": "s3:*",
            "Resource": ["arn:aws:s3:::{S3-bucket}","arn:aws:s3:::{S3-bucket}/*" ]
}
于 2020-12-15T16:27:16.717 回答