授权应用程序通过 CloudWatch RUM 将数据发送到 AWS
要使用 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 策略。
通过此选项,CloudWatch RUM 将创建以下资源:
新的 Amazon Cognito 身份池
未经身份验证的 Amazon Cognito 身份。这允许 RUM Web 客户端在不验证应用程序用户的情况下担任 IAM 角色。
RUM Web 客户端将担任的 IAM 角色。附加到此角色的 IAM 策略允许其使用带有应用程序监控资源的
PutRumEvents
API。换句话说,其允许 RUM Web 客户端向 RUM 发送数据。
RUM Web 客户端使用 Amazon Cognito 身份获取 AWS 凭证。AWS 凭证与 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' } );
使用现有的 Amazon Cognito 身份池
如果您选择使用现有的 Amazon Cognito 身份池,则需要在将应用程序添加到 CloudWatch RUM 时指定身份池。身份池必须支持访问未经验证的身份。您只能使用同一区域中的身份池。
您还必须将以下权限添加到已附加到与此身份池关联的 IAM 角色的 IAM 策略。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "rum:PutRumEvents", "Resource": "arn:aws:rum:[
region
]:[accountid
]:appmonitor/[app monitor name
]" } ] }
Amazon Cognito 会发送必要的安全令牌,以确保应用程序能够访问 CloudWatch RUM。
第三方提供商
如果您选择使用第三方提供商的私有身份验证,则必须从身份提供商处获取凭证并将其转发到 AWS。执行此操作的最佳方法是使用安全令牌供应商。您可以使用任意安全令牌供应商,包括使用 AWS Security Token Service 的 Amazon Cognito。有关 AWS STS 的更多信息,请参阅欢迎使用 AWS Security Token Service API 参考。
如果您想在这种情况下使用 Amazon Cognito 作为令牌供应商,则可以配置 Amazon Cognito,以与身份验证提供商结合使用。有关更多信息,请参阅 Amazon Cognito 身份池入门(联合身份)。
配置 Amazon Cognito 以与身份提供商结合使用后,还需要执行以下操作:
创建具有以下权限的 IAM 角色。应用程序将使用该角色访问 AWS。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "rum:PutRumEvents", "Resource": "arn:aws:rum:[
region
]:[accountID
]:appmonitor/[app monitor name
]" } ] }将以下内容添加到应用程序中,让应用程序将提供商的凭证传递给 CloudWatch RUM。插入该行,以便在用户登录到应用程序并且应用程序收到用于访问 AWS 的凭证后运行。
cwr('setAwsCredentials', {/* Credentials or CredentialProvider */});
有关 AWS JavaScript SDK 凭证提供商的更多信息,请参阅 SDK for JavaScript v3 开发者指南中的在 Web 浏览器中设置凭证、SDK for JavaScript v2 开发人员指南中的在 Web 浏览器中设置凭证以及 @aws-sdk/凭证提供商
您还可以使用适用于 CloudWatch RUM Web 客户端的软件开发工具包来配置 Web 客户端身份验证方法。有关 Web 客户端软件开发工具包的更多信息,请参阅 CloudWatch RUM Web 客户端软件开发工具包