如何在 ECS 容器中使用 stripe cli 和受限 api 密钥在实时模式下运行 stripe 监听?

问题描述 投票:0回答:2

我正在尝试在 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 密钥秘密从秘密管理器访问到命令中?

docker stripe-payments amazon-ecs ecs-taskdefinition
2个回答
0
投票

我认为问题是这里可能存在一些实时和测试模式的混合。如果您尝试转发实时模式事件,则需要按照以下步骤操作:

1/ 在仪表板中创建实时模式受限密钥并启用 Stripe CLI 权限

2/ 使用条

login --interactive
输入步骤1中创建的受限密钥

3/ 收听并转发活动


0
投票
"command": [
                "listen",
                "--api-key",
                "${STRIPE_RESTRICTED_API_KEY}",
                "--forward-to",
                "https://redacted.com/api/stripe/webhook"
            ]

当您以这种方式传递参数时,它们不会经历 shell 扩展。文字字符串

${STRIPE_RESTRICTED_API_KEY}
被传递到您的可执行文件,这当然不是有效的密钥。

我不熟悉 Stripe CLI,但简短的谷歌搜索显示this

您可以设置两个环境变量,它们优先于所有其他值:

STRIPE_API_KEY
:用于 CLI 的 API 密钥。

如果它确实如宣传的那样工作,您只需将环境变量命名为

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"]
© www.soinside.com 2019 - 2024. All rights reserved.