步骤 1:授权应用程序将数据发送到 Amazon - Amazon CloudWatch
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

步骤 1:授权应用程序将数据发送到 Amazon

要使用 CloudWatch RUM,应用程序必须获得授权。

您有三种设置授权的选项:

  • 用 CloudWatch RUM 为应用程序创建新的 Amazon Cognito 身份池。这是最简单的设置方法。这是默认选项。

    身份池将包含未经验证的身份。这允许 CloudWatch RUM Web 客户端将数据发送到 CloudWatch RUM,而无需对应用程序的用户进行身份验证。

    Amazon Cognito 身份池具有附加的 IAM 角色。Amazon Cognito 未经验证的身份允许 Web 客户端担任 IAM 角色,此角色已获得授权,可向 CloudWatch RUM 发送数据。

  • 使用现有的 Amazon Cognito 身份池。在这种情况下,还必须修改附加到身份池的 IAM 角色。

  • 使用已设置的现有身份提供商的身份验证。在这种情况下,您必须从身份提供商处获取凭证,并且应用程序必须将这些凭证转发到 RUM Web 客户端。

以下各节包含了这些选项的更多详细信息。

CloudWatch RUM 创建新的 Amazon Cognito 身份池

这是最简单的设置选项,如果选择此选项,则无需其他设置步骤。您必须拥有管理权限才能使用此选项。有关更多信息,请参阅使用 CloudWatch RUM 的 IAM policy

通过此选项,CloudWatch RUM 将创建以下资源:

  • 新的 Amazon Cognito 身份池

  • 未经身份验证的 Amazon Cognito 身份。这允许 RUM Web 客户端在不验证应用程序用户的情况下担任 IAM 角色。

  • RUM Web 客户端将担任的 IAM 角色。附加到此角色的 IAM policy 允许其使用带有应用程序监控资源的 PutRumEvents API。换句话说,其允许 RUM Web 客户端向 RUM 发送数据。

RUM Web 客户端使用 Amazon Cognito 身份获取 Amazon 凭证。Amazon 凭证与 IAM 角色关联。IAM 角色有权通过 AppMonitor 资源使用 PutRumEvents

Amazon Cognito 会发送必要的安全令牌,以确保应用程序能够向 CloudWatch RUM 发送数据。CloudWatch RUM 生成的 JavaScript 代码段包括以下代码行以启用身份验证。

{ identityPoolId: [identity pool id], // e.g., 'us-west-2:EXAMPLE4a-66f6-4114-902a-EXAMPLEbad7' guestRoleArn: [iam role arn] // e.g., 'arn:aws:iam::123456789012:role/Nexus-Monitor-us-east-1-123456789012_Unauth_5889316876161' } );

使用现有的 Amazon Cognito 身份池

如果您选择使用现有的 Amazon Cognito 身份池,则需要在将应用程序添加到 CloudWatch RUM 时指定身份池。身份池必须支持访问未经验证的身份。您还必须将以下权限添加到已附加到与此身份池关联的 IAM 角色的 IAM policy。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "rum:PutRumEvents", "Resource": "arn:aws:rum:[region]:[accountid]:appmonitor/[app monitor name]" } ] }

Amazon Cognito 会发送必要的安全令牌,以确保应用程序能够访问 CloudWatch RUM。

第三方提供商

如果您选择使用第三方提供商的私有身份验证,则必须从身份提供商处获取凭证并将其转发到 Amazon。执行此操作的最佳方法是使用安全令牌供应商。您可以使用任意安全令牌供应商,包括使用 Amazon Security Token Service 的 Amazon Cognito。有关 Amazon STS 的更多信息,请参阅欢迎使用 Amazon Security Token Service API 参考

如果您想在这种情况下使用 Amazon Cognito 作为令牌供应商,则可以配置 Amazon Cognito,以与身份验证提供商结合使用。有关更多信息,请参阅 Amazon Cognito 身份池入门(联合身份)

配置 Amazon Cognito 以与身份提供商结合使用后,还需要执行以下操作:

  • 创建具有以下权限的 IAM 角色。应用程序将使用该角色访问 Amazon。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "rum:PutRumEvents", "Resource": "arn:aws:rum:[region]:[accountID]:appmonitor/[app monitor name]" } ] }
  • 将以下内容添加到应用程序中,让应用程序将提供商的凭证传递给 CloudWatch RUM。插入该行,以便在用户登录到应用程序并且应用程序收到用于访问 Amazon 的凭证后运行。

    cwr('setAwsCredentials', {/* Credentials or CredentialProvider */});

有关 Amazon JavaScript SDK 凭证提供商的更多信息,请参阅 SDK for JavaScript v3 开发者指南中的在 Web 浏览器中设置凭证、SDK for JavaScript v2 开发人员指南中的在 Web 浏览器中设置凭证以及 @aws-sdk/凭证提供商

您还可以使用适用于 CloudWatch RUM Web 客户端的软件开发工具包来配置 Web 客户端身份验证方法。有关 Web 客户端软件开发工具包的更多信息,请参阅 CloudWatch RUM Web 客户端软件开发工具包