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

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

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

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

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

  1. 创建 IAM 策略,以允许实体(此处为 Amazon Pinpoint)写入到特定 Amazon S3 存储桶。

  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 policy
  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/s3 替换为你在上一节中创建ExportPolicy的策略的 ARN。