我正在尝试在 AWS ECS docker 容器中运行 stripe cli 来执行
条纹听
当我在测试模式下执行此操作时,它似乎工作正常。我怀疑这是因为你不需要 api-key 来运行它。
我创建了一个受限的 API 密钥并将其放入秘密管理器中,分配了一个角色,并且我知道我可以在运行时获取秘密,因为其他服务器容器在运行时获取秘密而不会出现问题。
我已经设置了任务定义。我将在下面提供条带容器的 json 定义:
{
"name": "stripe-cli",
"image": "stripe/stripe-cli",
"cpu": 0,
"portMappings": [],
"essential": true,
"command": [
"listen",
"--api-key",
"${STRIPE_RESTRICTED_API_KEY}",
"--forward-to",
"https://redacted.com/api/stripe/webhook"
],
"environment": [],
"mountPoints": [],
"volumesFrom": [],
"secrets": [
{
"name": "STRIPE_RESTRICTED_API_KEY",
"valueFrom": "arn:aws:secretsmanager:region:accountId:secret:secret_store_redacted:secret_name_redacted::"
}
],
"dependsOn": [
{
"containerName": "redacted",
"condition": "HEALTHY"
}
],
"readonlyRootFilesystem": true,
"logConfiguration": {
"logDriver": "awslogs",
"options": {},
"secretOptions": []
},
"healthCheck": {
"command": [
"CMD-SHELL",
"stripe version || exit 1"
],
"interval": 30,
"timeout": 5,
"retries": 3,
"startPeriod": 0
}
}
问题是,当我尝试在实时模式下部署 stripe cli 时,我不断收到此错误
“message”:“出于安全原因,Stripe CLI 仅允许在实时模式下使用受限密钥。要生成用于实时模式的受限密钥,请使用
stripe login
命令。”
我做错了什么吗?是否有另一种方法可以将受限制的 API 密钥秘密从秘密管理器访问到命令中?
我认为问题是这里可能存在一些实时和测试模式的混合。如果您尝试转发实时模式事件,则需要按照以下步骤操作:
1/ 在仪表板中创建实时模式受限密钥并启用 Stripe CLI 权限
2/ 使用条
login --interactive
输入步骤1中创建的受限密钥
3/ 收听并转发活动
"command": [
"listen",
"--api-key",
"${STRIPE_RESTRICTED_API_KEY}",
"--forward-to",
"https://redacted.com/api/stripe/webhook"
]
当您以这种方式传递参数时,它们不会经历 shell 扩展。文字字符串
${STRIPE_RESTRICTED_API_KEY}
被传递到您的可执行文件,这当然不是有效的密钥。
我不熟悉 Stripe CLI,但简短的谷歌搜索显示this:
您可以设置两个环境变量,它们优先于所有其他值:
:用于 CLI 的 API 密钥。STRIPE_API_KEY
如果它确实如宣传的那样工作,您只需将环境变量命名为
STRIPE_API_KEY
并省略 --api-key
参数。
要使 shell 扩展发挥作用,您需要调用实际的 shell:
"command": ["/bin/sh", "-c", "stripe listen --api-key \"$STRIPE_RESTRICTED_API_KEY\" --forward-to https://redacted.com/api/stripe/webhook"]