

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

# `AWSSupport-AssociatePhoneNumbersToConnectContactFlows`
<a name="automation-associate-phone-numbers-to-connect-contact-flows"></a>

 **描述** 

 `AWSSupport-AssociatePhoneNumbersToConnectContactFlows`可以帮助您将电话号码与 Amazon Connect 实例中的联系流程相关联。通过在输入逗号分隔值 (CSV) 文件中提供电话号码和联系人流的映射，运行手册可在 14.5 分钟内将尽可能多的电话号码与联系人流程关联起来。运行手册会生成一个 CSV 文件，其中包含它无法在时限内关联的所有电话号码和联系流对，以便您可以在下次运行时输入它们。

 **如何工作？** 

 该运行手册`AWSSupport-AssociatePhoneNumbersToConnectContactFlows`可帮助您使用存储在亚马逊简单存储服务 (Amazon S3) 存储桶中的映射数据的 CSV 文件将电话号码与 Amazon Connect 实例中的联系人流程关联起来。输入 CSV 文件应与以下格式对齐，`PhoneNumber`值采用 [E.164](https://www.itu.int/rec/T-REC-E.164/en) 格式。

**输入 CSV 文件的示例**

```
PhoneNumber,ContactFlowName
+1800555xxxx,ContactFlowA
+1800555yyyy,ContactFlowB
+1800555zzzz,ContactFlowC
```

自动化 runbook 还会在`DestinationFileBucket`和`DestinationFilePath`中指定的目标位置创建以下文件。
+ **`automation:EXECUTION_ID/ResourceIdList.csv`**：一个临时文件，其中包含 `AssociatePhoneNumberContactFlow` API 所需的`PhoneNumberId`和`ContactFlowId`对。
+ **`automation:EXECUTION_ID/ErrorResourceList.csv`**：包含由于错误而无法处理的电话号码和联系流对的文件，例如`ResourceNotFoundException`格式为`PhoneNumber,ContactFlowName,ErrorMessage`。
+ **`automation:EXECUTION_ID/NonProcessedResourceList.csv`**：包含未处理的电话号码和联系流程对的文件。运行手册尝试在 14.5 分钟（ AWS Lambda 功能超时 15 分钟-缓冲 30 秒）内处理尽可能多的电话号码和联系人流。如果由于时间限制而无法处理某些电话号码/联系人流，则运行手册会将其包含在 CSV 文件中，用作下一次运行手册执行的输入。

**文档类型**

自动化

**所有者**

Amazon

**平台**

Linux、macOS、Windows

**参数**

**所需的 IAM 权限**

`AutomationAssumeRole` 参数需要执行以下操作才能成功使用运行手册。

```
        {
            "Statement": [
                {
                    "Action": [
                        "s3:GetBucketPublicAccessBlock",
                        "s3:GetBucketPolicyStatus",
                        "s3:GetBucketAcl",
                        "s3:GetObject",
                        "s3:GetObjectAttributes",
                        "s3:PutObject",
                        "s3:PutObjectAcl"
                    ],
                    "Resource": [
                    "arn:aws:s3:::YOUR-BUCKET/*",
                    "arn:aws:s3:::YOUR-BUCKET"
                    ],
                    "Effect": "Allow"
                },
                {
                    "Action": [
                        "cloudformation:CreateStack",
                        "cloudformation:DescribeStacks",
                        "cloudformation:DeleteStack",
                        "iam:CreateRole",
                        "iam:DeleteRole",
                        "iam:DeleteRolePolicy",
                        "iam:GetRole",
                        "iam:PutRolePolicy",
                        "lambda:CreateFunction",
                        "lambda:DeleteFunction",
                        "lambda:GetFunction",
                        "lambda:InvokeFunction",
                        "lambda:TagResource",
                        "connect:AssociatePhoneNumberContactFlow",
                        "logs:CreateLogGroup",
                        "logs:TagResource",
                        "logs:PutRetentionPolicy",
                        "logs:DeleteLogGroup",
                        "s3:GetAccountPublicAccessBlock"
                    ],
                    "Resource": "*",
                    "Effect": "Allow"
                },
                {
                    "Action": [
                        "connect:DescribeInstance",
                        "connect:ListPhoneNumbers",
                        "connect:ListContactFlows",
                        "ds:DescribeDirectories"
                    ],
                    "Resource": "*",
                    "Effect": "Allow"
                },
                {
                    "Condition": {
                        "StringLikeIfExists": {
                            "iam:PassedToService": [
                                "ssm.amazonaws.com",
                                "lambda.amazonaws.com"
                            ]
                        }
                    },
                    "Action": [
                        "iam:PassRole"
                    ],
                    "Resource": "*",
                    "Effect": "Allow"
                }
            ]
        }
```

如果提供`LambdaRoleArn`参数，则该角色需要执行以下操作才能成功使用运行手册。

------
#### [ JSON ]

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Action": [
				"logs:CreateLogGroup"
			],
			"Resource": "arn:aws:logs:us-east-1:111122223333:*",
			"Effect": "Allow"
		},
		{
			"Action": [
				"logs:CreateLogStream",
				"logs:PutLogEvents"
			],
			"Resource": "arn:aws:logs:us-east-1:111122223333:*",
			"Effect": "Allow"
		},
		{
			"Action": [
				"connect:AssociatePhoneNumberContactFlow"
			],
			"Resource": "*",
			"Effect": "Allow"
		},
		{
			"Action": [
				"s3:PutObject",
				"s3:GetObject"
			],
			"Resource": "arn:aws:s3:::amzn-s3-demo-bucket/DESTINATION_FILE_PATH*",
			"Effect": "Allow"
		}
	]
}
```

------

 **说明** 

按照这些步骤对自动化进行配置：

1. [https://console.aws.amazon.com/systems-manager/documents/AWSSupport-AssociatePhoneNumbersToConnectContactFlows/description](https://console.aws.amazon.com/systems-manager/documents/AWSSupport-AssociatePhoneNumbersToConnectContactFlows/description)在 Systems Manager 的 “文档” 下导航至。

1. 选择 Execute automation（执行自动化）。

1. 对于输入参数，请输入以下内容：
   + **AutomationAssumeRole （可选）**

     允许 Systems Manager Automation 代表您执行操作的 AWS AWS Identity and Access Management (IAM) 角色的亚马逊资源名称 (ARN)。如果未指定角色，Systems Manager Automation 将使用启动此运行手册的用户的权限。
   + **ConnectInstanceId （必填）**

     您的 Amazon Connect 实例的 ID。
   + **SourceFileBucket （必填）**

     存储包含电话号码和联系流程对的 CSV 文件的 Amazon S3 存储桶。
   + **SourceFilePath （必填）**

     包含电话号码和联系流程对的 CSV 文件的 Amazon S3 对象密钥。例如 `path/to/input.csv`。
   + **DestinationFileBucket （必填）**

     Amazon S3 存储桶，自动化将在其中放置中间文件和结果报告。
   + **DestinationFilePath （可选）**

     存储中间文件和结果报告`DestinationFileBucket`的 Amazon S3 对象路径。例如，如果您指定`path/to/files/`，则文件存储在下`s3://[DestinationFileBucket]/path/to/files/[automation:EXECUTION_ID]/`。
   + **S3BucketOwnerAccount （可选）**

     拥有您要上传联系流日志的 Amazon S3 存储桶的 AWS 账号。如果您未指定此参数，则运行手册将使用运行自动化的用户或角色的 AWS 账户 ID。
   + **S3BucketOwnerRoleArn （可选）**

     有权获取 Amazon S3 存储桶和账户封禁公开访问设置、存储桶加密配置、存储桶、存储桶策略状态以及将对象上传到存储桶的 IAM 角色的 ARN。 ACLs如果未指定此参数，则运行手册将使用`AutomationAssumeRole`（如果已指定）或用户启动此 runbook（如果`AutomationAssumeRole`未指定）。请参阅运行手册描述中的“所需权限”部分。
   + **LambdaRoleArn （可选）**

     允许 AWS Lambda 函数访问所需 AWS 服务和资源的 IAM 角色的 ARN。如果未指定任何角色，则此自动化将在您的账户中为 Lambda 创建一个 IAM 角色。

1. 选择执行。

1. 自动化启动。

1. 文档将执行以下步骤：
   + **CheckConnectInstanceExistance**

     检查中提供的 Amazon Connect 实例`ConnectInstanceId`是否存在。
   + **checkS3 BucketPublicStatus**

     检查中指定的 Amazon S3 存储桶是否`DestinationFileBucket`允许匿名或公开读取或写入权限。`SourceFileBucket`
   + **CheckSourceFileExistenceAndSize**

     检查中指定的源 CSV 文件`SourceFilePath`是否存在，以及文件大小是否超过 25 MiB 的限制。
   + **GenerateResourceIdMap**

     下载在中指定的源 CSV 文件，`SourceFilePath``PhoneNumberId``ContactFlowId`并为每个资源标识和。完成后，它会将包含、`PhoneNumber``PhoneNumberId``ContactFlowName`、和的 CSV 文件上传`ContactFlowId`到中`DestinationFileBucket`指定的目标 Amazon S3 存储桶。如果`PhoneNumberId`无法识别某个数字，则该字段在 CSV 文件中将为空。
   + **AssociatePhoneNumbersToContactFlows**

     使用 AWS CloudFormation 堆栈在您的账户中创建 AWS Lambda 函数。该 AWS Lambda 函数将每个号码与`SourceFileBucket`和中指定的源 CSV 文件中列出的联系人流相关联`SourceFilePath`， AWS CloudFormation 堆栈会调用该函数。在超时（15 分钟）之前，该 AWS Lambda 功能将尽可能多的电话号码映射到联系人流。由于错误而无法处理的电话号码和联系流程列表已上传`[automation:EXECUTION_ID]/ErrorResourceList.csv`。由于超过了单次执行中可以处理的最大电话号码数而无法处理的电话号码将被上传到`[automation:EXECUTION_ID]/NonProcessedResourceList.csv`。如果此步骤失败，它将进入该`DescribeCloudFormationErrorFromStackEvents`步骤以显示 AWS CloudFormation 堆栈事件失败的原因。
   + **WaitForPhoneNumberContactFlowAssociationCompletion**

     等待，直到创建将电话号码映射到联系人流的 AWS Lambda 函数并且 AWS CloudFormation 堆栈完成调用。
   + **GenerateReport**

     生成报告，其中包含映射到联系流的电话号码、由于错误而无法处理的电话号码，以及由于超出单次执行中可以处理的最大电话号码数而无法处理的电话号码。该报告还会显示`[automation:EXECUTION_ID]/ErrorResourceList.csv`或`[automation:EXECUTION_ID]/NonProcessedResourceList.csv`的位置（如适用）（亚马逊 S3 URI 和 Amazon S3 控制台 URL）。
   + **`DeleteCloudFormationStack`**

     删除 AWS CloudFormation 堆栈，包括用于映射的 Lambda 函数。
   + **`DescribeCloudFormationErrorFromStackEvent`**

     描述`AssociatePhoneNumbersToContactFlows`步骤 AWS CloudFormation 堆栈中的错误。

1. 完成后，请查看 “输出” 部分，了解执行的详细结果：
   + **GenerateReport.OutputPayload**

      电话号码和联系流关联的输出。该报告包含以下信息：
     + 输入 CSV 文件中列出的电话号码和联系流对的数量
     + 在输入 CSV 文件中指定的与联系流关联的电话号码数量
     + 由于错误而无法与联系流关联的电话号码数量
     + 由于时间限制而未与联系流关联的电话号码数量
     + CSV 文件的位置（Amazon S3 URI 和 Amazon S3 控制台 URL），该文件包含由于错误而无法关联的电话号码和联系流对
     + CSV 文件的位置（Amazon S3 URI 和 Amazon S3 控制台 URL），该文件包含由于时间限制而未关联的电话号码和联系流对
   + **DescribeCloudFormationErrorFromStackEvents. 活动**

     在`AssociatePhoneNumbersToContactFlows`步骤失败时显示 AWS CloudFormation 堆栈事件的输出。

使用少量电话号码和联系人流执行的输出

![\[Report showing 7 phone numbers processed successfully with no errors or time constraints.\]](http://docs.aws.amazon.com/zh_cn/systems-manager-automation-runbooks/latest/userguide/images/automation-associate-phone-numbers-to-connect-contact-flows_outputs_small.png)


执行输出包含大量电话号码和联系人流以及由于错误或时间限制而未关联的电话号码

![\[Amazon Connect phone number mapping results showing processed and unprocessed contacts.\]](http://docs.aws.amazon.com/zh_cn/systems-manager-automation-runbooks/latest/userguide/images/automation-associate-phone-numbers-to-connect-contact-flows_outputs_many.png)


 **参考** 

Systems Manager Automation
+ [运行此自动化（控制台）](https://console.aws.amazon.com/systems-manager/documents/AWSSupport-AssociatePhoneNumbersToConnectContactFlows/description)
+ [运行自动化](https://docs.aws.amazon.com//systems-manager/latest/userguide/automation-working-executing.html)
+ [设置自动化](https://docs.aws.amazon.com//systems-manager/latest/userguide/automation-setup.html)
+ [支持自动化工作流登录页面](https://aws.amazon.com/premiumsupport/technology/saw/)