使用Pulumi部署AWS栈报错:未找到名为'dev'的栈
问题描述
尝试通过GitHub Actions结合Pulumi在AWS账户中部署栈,使用的deploy.yml配置如下:
name: Pushes Glue Scripts to S3 on: push: branches: [ "main" ] pull_request: branches: [ "main" ] workflow_dispatch: jobs: deploy: runs-on: ubuntu-latest steps: - name: Deploy jobs uses: pulumi/actions@v5 id: pulumi env: PULUMI_CONFIG_PASSPHRASE: ${{ secrets.PULUMI_CONFIG_PASSPHRASE }} with: command: up cloud-url: s3://my-bucket/pulumi/ stack-name: dev
仓库中存在Pulumi.dev.yaml栈文件(仅包含加密盐代码),且已通过pulumi login s3://my-bucket/pulumi/将Pulumi后端配置为S3存储桶,但运行部署时出现以下错误:
StackNotFoundError: code: -2 stdout: stderr: Command failed with exit code 255: pulumi stack select --stack dev --non-interactive error: no stack named 'dev' found err?: Error: Command failed with exit code 255: pulumi stack select --stack dev --non-interactive error: no stack named 'dev' found
解决方法
添加代码检出步骤
GitHub Actions容器默认不会拉取仓库代码,必须显式添加actions/checkout步骤,确保Pulumi.dev.yaml和Pulumi基础设施代码能被工具访问:jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 - name: Deploy jobs uses: pulumi/actions@v5 # 其余配置保持不变同步
dev栈到S3后端
本地执行以下操作,确保S3后端中存在dev栈:- 切换到S3后端:
pulumi login s3://my-bucket/pulumi/ - 查看现有栈:
pulumi stack ls,若未找到dev栈,执行pulumi stack init dev创建 - 执行
pulumi up一次,将本地栈状态推送到S3后端
- 切换到S3后端:
配置AWS访问凭证
Pulumi需要AWS权限才能访问S3后端,在GitHub仓库Secrets中添加AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY,并在Workflow中注入:env: PULUMI_CONFIG_PASSPHRASE: ${{ secrets.PULUMI_CONFIG_PASSPHRASE }} AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
GitHub Actions + Pulumi 必做检查步骤
- 代码检出验证:必须添加
actions/checkout步骤,确保Pulumi能读取项目中的栈配置和基础设施代码 - 后端权限配置:确认Workflow拥有访问Pulumi后端(如S3)的对应云服务商权限,凭证配置正确
- 栈存在性确认:提前在目标后端创建指定栈,或在Workflow中添加
pulumi stack init --non-interactive步骤(仅当栈不存在时自动创建) - 环境变量检查:确保
PULUMI_CONFIG_PASSPHRASE(若启用加密)、云服务商凭证等必要环境变量已正确注入 - 版本兼容性验证:确认
pulumi/actions版本与本地使用的Pulumi CLI版本兼容,避免版本差异导致的栈识别问题 - 栈名称准确性:检查Workflow中
stack-name与后端中存在的栈名称完全一致(大小写敏感)
内容的提问来源于stack exchange,提问作者Guilherme Noronha
相关产品推荐
相关产品推荐

