AWS SNS/SQS
关于AWS SNS/SQS pubsub组件的详细文档
配置
要为 发布/订阅设置 AWS SNS/SQS,您需要创建一个类型为 pubsub.snssqs
的组件。 请参阅本指南,了解如何创建和应用 pubsub 配置。
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: snssqs-pubsub
namespace: default
spec:
type: pubsub.snssqs
version: v1
metadata:
- name: accessKey
value: "AKIAIOSFODNN7EXAMPLE"
- name: secretKey
value: "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
- name: region
value: "us-east-1"
- name: sessionToken
value: "TOKEN"
- name: messageVisibilityTimeout
value: 10
- name: messageRetryLimit
value: 10
- name: messageWaitTimeSeconds
value: 1
- name: messageMaxNumber
value: 10
Warning
以上示例将 Secret 明文存储。 更推荐的方式是使用 Secret 组件, 这里。
元数据字段规范
字段 | 必填 | 详情 | 示例 |
---|---|---|---|
accessKey | Y | 具有SNS和SQS适当权限的AWS账户的ID。 可以用secretKeyRef 来引用密钥。 | “AKIAIOSFODNN7EXAMPLE” |
secretKey | Y | AWS用户的密钥。 可以用secretKeyRef 来引用 | “wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY” |
region | Y | AWS区域到实例。 有效区域请参见本页面:https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html。 确保该地区有SNS和SQS。 | “us-east-1” |
终结点 | N | 该组件要使用的AWS端点, 仅用于本地开发。 仅用于本地开发。 当对生产环境的AWS,endpoint 是不需要的。 | “http://localhost:4566“ |
sessionToken | N | 要使用的 AWS 会话令牌。 只有当您使用临时安全凭证时才需要会话令牌。 | “TOKEN” |
messageVisibilityTimeout | N | 消息发送至订阅者后,隐藏接收请求的时间,以秒为单位。 默认值:10 | 10 |
messageRetryLimit | N | 在处理消息失败后,从队列中删除该消息之前,重新发送消息的次数。 默认值:10 | 10 |
messageWaitTimeSeconds | N | 等待收到消息后再提出请求的时间 默认值:1 | 1 |
messageMaxNumber | N | 每次从队列中接收消息的最大数量。 默认值:10 ,最大值:10 | 10 |
创建SNS/SQS实例
对于本地开发来说,可以用localstack项目集成AWS SNS/SQS。 按照这里的说明安装localstack CLI。
为了将localstack与你的pubsub绑定在一起,你需要提供endpoint
配置。 当在AWS生产环境上运行时,endpoint
是不需要的。
关于身份验证相关属性的信息,请参阅 认证到 AWS
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: snssqs-pubsub
spec:
type: pubsub.snssqs
version: v1
metadata:
- name: endpoint
value: http://localhost:4566
# Use us-east-1 for localstack
- name: region
value: us-east-1
要在Kubernetes上运行localstack,可以应用以下配置。 然后,Localstack可以通过DNS名称http://localstack.default.svc.cluster.local:4566
发现。 (假设这被应用于默认的命名空间),这应该被用作端点
。
apiVersion: apps/v1
kind: Deployment
metadata:
name: localstack
namespace: default
spec:
# using the selector, we will expose the running deployments
# this is how Kubernetes knows, that a given service belongs to a deployment
selector:
matchLabels:
app: localstack
replicas: 1
template:
metadata:
labels:
app: localstack
spec:
containers:
- name: localstack
image: localstack/localstack:latest
ports:
# Expose the edge endpoint
- containerPort: 4566
---
kind: Service
apiVersion: v1
metadata:
name: localstack
labels:
app: localstack
spec:
selector:
app: localstack
ports:
- protocol: TCP
port: 4566
targetPort: 4566
type: LoadBalancer
为了在AWS中运行,你应该创建一个具有SNS和SQS服务权限的IAM用户。 使用AWS account ID
和AWS account secret
,并使用Kubernetes密钥和secretKeyRef
将它们插入组件元数据中的accessKey
和secretKey
。
相关链接
- Dapr组件的基本格式
- 发布/订阅构建块
- 请访问 本指南 ,了解如何配置 pub/sub 组件
- 将AWS SQS作为SNS的订阅者
- AWS SNS API reference
- AWS SQS API reference
- AWS认证