IAM用于导出端点或分段的角色 - Amazon Pinpoint

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

IAM用于导出端点或分段的角色

您可以通过创建导出任务来获取端点列表。创建导出任务时,必须指定项目 ID,并可以选择指定分段 ID。然后,Amazon Pinpoint 将与项目或分段关联的端点列表导出到 Amazon Simple Storage Service (Amazon S3) 存储桶。生成的文件包含端点及其属性的JSON格式列表,例如频道、地址、选择加入/选择退出状态、创建日期和端点 ID。

要创建导出任务,您必须配置一个IAM角色以允许 Amazon Pinpoint 写入亚马逊 S3 存储桶。配置角色的过程包含以下两个步骤:

  1. 创建允许实体(在本例中为 Amazon Pinpoint)写入特定的 Amazon S3 存储桶的IAM策略。

  2. 创建IAM角色并将策略附加到该角色上。

本主题包含完成这两个步骤的过程。这些过程假定您已创建了 Amazon S3 存储桶,并在该存储桶创建了文件夹以用于存储导出的分段。有关创建存储桶的信息,请参阅《Amazon Simple Storage Service 用户指南》中的创建存储桶

这些过程同样假定您已安装和配置 AWS Command Line Interface (AWS CLI)。有关设置的信息 AWS CLI,请参阅AWS Command Line Interface 用户指南》 AWS CLI中的安装

步骤 1:创建 IAM策略

IAM策略定义实体(例如身份或资源)的权限。要创建用于导出 Amazon Pinpoint 端点的角色,必须创建一个策略,以授予写入到特定 Amazon S3 存储桶中的特定文件夹的权限。以下策略示例遵循授予最低权限这一安全实践,也就是说,仅授予执行某项任务所需的权限。

创建 IAM 策略
  1. 在文本编辑器中,创建一个新文件。将以下代码粘贴到该文件中:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowUserToSeeBucketListInTheConsole", "Action": [ "s3:ListAllMyBuckets", "s3:GetBucketLocation" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::*" ] }, { "Sid": "AllowRootAndHomeListingOfBucket", "Action": [ "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::example-bucket" ], "Condition": { "StringEquals": { "s3:delimiter": [ "/" ], "s3:prefix": [ "", "Exports/" ] } } }, { "Sid": "AllowListingOfUserFolder", "Action": [ "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::example-bucket" ], "Condition": { "StringLike": { "s3:prefix": [ "Exports/*" ] } } }, { "Sid": "AllowAllS3ActionsInUserFolder", "Action": [ "s3:*" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::example-bucket/Exports/*" ] } ] }

    在前面的代码中,替换所有实例 example-bucket 使用包含您要将区段信息导出到的文件夹的 Amazon S3 存储桶的名称。另外,替换所有实例 Exports 使用文件夹本身的名称。

    完成后,将文件另存为 s3policy.json

  2. 通过使用 AWS CLI,导航到s3policy.json文件所在的目录。然后,键入以下命令以创建策略:

    aws iam create-policy --policy-name s3ExportPolicy --policy-document file://s3policy.json

    如果策略创建成功,则您会看到类似于以下内容的输出:

    { "Policy": { "CreateDate": "2018-04-11T18:44:34.805Z", "IsAttachable": true, "DefaultVersionId": "v1", "AttachmentCount": 0, "PolicyId": "ANPAJ2YJQRJCG3EXAMPLE", "UpdateDate": "2018-04-11T18:44:34.805Z", "Arn": "arn:aws:iam::123456789012:policy/s3ExportPolicy", "PolicyName": "s3ExportPolicy", "Path": "/" } }

    复制策略的 Amazon 资源名称 (ARN)(arn:aws:iam::123456789012:policy/s3ExportPolicy在前面的示例中)。在下一节中,您必须在创建角色ARN时提供此信息。

    注意

    如果您看到一条消息,指出您的账户无权执行该CreatePolicy操作,则需要向用户附加允许您创建新策略和角色的IAM策略。有关更多信息,请参阅《IAM用户指南》中的添加和删除IAM身份权限

步骤 2:创建 IAM 角色

现在,您已经创建了IAM策略,可以创建一个角色并将该策略附加到该角色上。每个IAM角色都包含一个信任策略,即一组规则,用于指定允许哪些实体担任该角色。在本部分中,您将创建一个信任策略,以允许 Amazon Pinpoint 代入角色。接下来,您可以创建角色本身,然后附加您在前一部分创建的策略。

创建 IAM 角色
  1. 在文本编辑器中,创建一个新文件。将以下代码粘贴到该文件中:

    { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"pinpoint.amazonaws.com" }, "Action":"sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "accountId" }, "ArnLike": { "aws:SourceArn": "arn:aws:mobiletargeting:region:accountId:apps/applicationId" } } } ] }

    将该文件保存为 trustpolicy.json

  2. 通过使用 AWS CLI,导航到trustpolicy.json文件所在的目录。然后,键入以下命令以创建新角色:

    aws iam create-role --role-name s3ExportRole --assume-role-policy-document file://trustpolicy.json
  3. 在命令行中,键入以下命令,将您在前一部分创建的策略附加到您刚创建的角色:

    aws iam attach-role-policy --policy-arn arn:aws:iam::123456789012:policy/s3ExportPolicy --role-name s3ExportRole

    在前面的命令中,替换 arn:aws:iam::123456789012:policy/s3ExportPolicy 与ARN您在上一节中创建的策略相同。