所有使用AWS服务(如DynamoDB、SQS、S3等) 的Dapr组件都使用一套标准化的属性进行配置,这些属性描述如下。
这篇文章提供了关于(Dapr 使用的) AWS SDK如何处理证书的概述
以下属性都不是必需的,因为AWS SDK可以使用上面链接中描述的默认供应链进行配置。 测试组件配置并检查Dapr运行时的日志输出以确保组件正确初始化是很重要的。
region
。要连接到哪个AWS区域。 在某些情况下(例如在自托管模式下运行Dapr时),这个标志可以由环境变量AWS_REGION
提供。 Since Dapr sidecar injection doesn’t allow configuring environment variables on the Dapr sidecar, it is recommended to always set the region
attribute in the component spec.endpoint
: The endpoint is normally handled internally by the AWS SDK. However, in some situations it might make sense to set it locally - for example if developing against DynamoDB Local.accessKey
: AWS Access key id.secretKey
: AWS Secret access key. Use together with accessKey
to explicitly specify credentials.sessionToken
: AWS Session token. 与accessKey
和secretKey
一起使用。 当使用普通IAM用户的 access key和密钥时,通常不需要session token。在生产场景中,建议使用Kiam或Kube2iam等解决方案。 如果在 AWS EKS 上运行,你可以 将 IAM 角色链接到 Kubernetes 服务帐户,你的 pod 可以使用该帐户。
所有这些解决方案都解决了同样的问题:它们允许Dapr运行时进程(或sidecar)动态地重新获取凭证,因此不需要显式凭证。 这样做有几个好处,比如自动轮换访问密钥,避免必须管理密钥。
Kiam和Kube2IAM都是通过拦截对实例元数据服务的调用来工作的。
如果直接在AWS EC2实例上以单机模式运行Dapr,可以使用实例配置文件。 只需配置一个iam角色并将其附加到ec2实例的实例配置文件中,Dapr就能对AWS进行身份验证,而无需在Dapr组件清单中指定证书。
当在单机模式下运行Dapr(或直接运行Dapr时)时,你可以选择像这样在进程中注入环境变量(在Linux/MacOS上)。
FOO=bar daprd --app-id myapp
如果你在本地有配置的名为AWS的配置文件,您可以通过指定 “AWS_PROFILE “环境变量来告诉Dapr(或Dapr运行时)要使用哪个配置文件:
AWS_PROFILE=myprofile dapr run...
or
AWS_PROFILE=myprofile daprd...
你可以使用任何支持的环境变量以这种方式配置Dapr。
在Windows上,需要在启动dapr
或daprd
命令之前设置环境变量,不支持如上图所示的内联操作。
如果你使用 AWS SSO进行身份验证,一些 AWS SDK(包括 Go SDK)还不支持此功能。 你可以使用一些实用程序来 “桥接 “基于 AWS SSO 的凭证和 “传统 “凭证,例如 AwsHelper 或 aws-sso-util。
如果使用AwsHelper,可以这样启动Dapr:
AWS_PROFILE=myprofile awshelper dapr run...
or
AWS_PROFILE=myprofile awshelper daprd...
在Windows上,环境变量需要在启动awshelper
命令之前进行设置,不支持如上所示的内联操作。