适用于 PHP 的 AWS 开发工具包
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

授权开发工具包指标在AWS SDK for PHP版本 3 中收集和发送指标

要使用适用于企业支持的 AWS 开发工具包指标从 AWS 开发工具包收集指标,企业客户必须创建 IAM 角色,该角色授予 CloudWatch 代理从 Amazon EC2 实例或生产环境收集数据的权限。

使用以下 PHP 代码示例或 AWS 控制台来创建 IAM 策略和角色,使得 CloudWatch 代理能够访问您的环境中的开发工具包指标。

要了解如何将开发工具包指标与AWS SDK for PHP结合使用的更多信息,请参阅为适用于 PHP 的 AWS 开发工具包版本 3 设置开发工具包指标。有关开发工具包指标的更多信息,请参阅 Amazon CloudWatch User Guide 中的开发工具包指标的 IAM 权限

使用AWS SDK for PHP设置访问权限

为实例创建 IAM 角色,该角色有权访问 Amazon EC2 Systems Manager 和开发工具包指标。

首先,使用 CreatePolicy 创建策略。然后,使用 CreateRole 创建角色。最后,使用 AttachRolePolicy 将创建的策略附加到新角色。

导入

require 'vendor/autoload.php'; use Aws\Iam\IamClient; use Aws\Exception\AwsException;

示例代码

$client = new IamClient([ 'profile' => 'default', 'region' => 'us-west-2', 'version' => '2010-05-08' ]); $roleName = 'AmazonCSM'; $description = 'An Instance role that has permission for Amazon EC2 Systems Manager and SDK Metric Monitoring.'; $AmazonCSMPolicy = '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sdkmetrics-beta:*" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ssm:GetParameter" ], "Resource": "arn:aws:ssm:*:*:parameter/AmazonCSM*" } ] }'; $rolePolicy = '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }'; try { $iamPolicy = $client->createPolicy([ 'PolicyName' => $roleName . 'policy', 'PolicyDocument' => $AmazonCSMPolicy ]); if ($iamPolicy['@metadata']['statusCode'] == 200) { $policyArn = $iamPolicy['Policy']['Arn']; echo('<p> Your IAM Policy has been created. Arn - '); echo($policyArn); echo('<p>'); $role = $client->createRole([ 'RoleName' => $roleName, 'Description' => $description, 'AssumeRolePolicyDocument' => $rolePolicy, ]); echo('<p> Your IAM User Role has been created. Arn: '); echo($role['Role']['Arn']); echo('<p>'); if ($role['@metadata']['statusCode'] == 200) { $result = $client->attachRolePolicy([ 'PolicyArn' => $policyArn, 'RoleName' => $roleName, ]); var_dump($result) } else { echo('<p> There was an error creating your IAM User Role </p>'); var_dump($role); } } else { echo('<p> There was an error creating your IAM Policy </p>'); var_dump($iamPolicy); } } catch (AwsException $e) { // output error message if fails echo $e; error_log($e->getMessage()); }

使用 IAM 控制台设置访问权限

或者,您可以使用 IAM 控制台创建角色。

  1. 转至 IAM 控制台,然后创建角色以使用 Amazon EC2。

  2. 在导航窗格中,选择 Roles (角色)

  3. 选择 Create Role (创建角色)

  4. 选择 AWS Service (AWS 服务),然后选择 EC2

  5. 选择 Next: Permissions (下一步: 权限)

  6. 附加权限策略下,选择创建策略

  7. 对于 Service (服务),选择 Systems Manager。对于 Actions (操作),展开 Read,然后选择 GetParameters。对于资源,指定您的 CloudWatch 代理。

  8. 添加其他权限

  9. 选择选择服务,然后选择手动输入服务。对于 Service (服务),输入 sdkmetrics。选择所有 sdkmetrics 操作和所有资源,然后选择查看策略

  10. Role (角色) 命名为 AmazonSDKMetrics,然后添加描述。

  11. 选择 Create Role (创建角色)