azure Pulumi获取静态Web App的部署令牌

mzaanser  于 2023-05-18  发布在  其他
关注(0)|答案(3)|浏览(115)

我使用pulumi和azure-native包来创建azure基础设施。我创建静态Web应用程序:

const staticApp = new azureNative.web.StaticSite(
  "test", 
  {
    resourceGroupName: "test-static-site",
    location: location,
    name: getResourceName(projectResources.staticSite)
  });

稍后,我想使用AzureStaticWebApp@0管道任务将文件部署到这个应用程序:

- task: AzureStaticWebApp@0
    displayName: 'Deploy'
    inputs:
      app_location: '/.../build'
      api_location: '/.../api'
      output_location: ''
      skip_app_build: true
      azure_static_web_apps_api_token: '???'

我希望azure_static_web_apps_api_token是pulumi azureNative.web.StaticSite的一部分,但它不在那里。有没有办法从pulumi输出中获取这个令牌值?

hgc7kmma

hgc7kmma1#

如果您使用Pulumi创建Azure静态站点并使用其他管道技术进行部署,则需要在使用Azure CLI进行部署期间明确获取Azure部署令牌

az staticwebapp secrets list --name MyStaticSiteName -o json

你可以在这里找到一个例子(不是我的)https://blog.johnnyreilly.com/2021/12/05/azure-static-web-app-deploy-previews-with-azure-devops#azure-pipelines-tweaks

j91ykkif

j91ykkif2#

可以使用azureNative.web.listStaticSiteSecretsOutput
但是,您应该在调用函数之前Assert资源源已创建。
你可以这样做

const staticApp_secrets = staticApp.id.apply(() => // assert staticApp is created
  azureNative.web.listStaticSiteSecretsOutput({
    resourceGroupName: staticApp.ressourceGroupName,
    name: staticApp.name,
  })
);
const deploymentToken = staticApp_secrets.properties.apply((properties) => properties.apiKey);
ssgvzors

ssgvzors3#

这个值是由你提供的。它是任务的输入,需要提供给Azure DevOps Pipeline和Azure静态网站资源。
您可以在这里看到输入属性
您可以使用的一个选项是使用Pulumi生成一个随机秘密,导出它,然后将此选项输入到您的管道中。

import * as random from "@pulumi/random";

const token = new random.RandomPassword("deploymentToken", {
    length: 10,
})

export const deploymentToken = token.result

const staticApp = new azureNative.web.StaticSite(
  "test", 
  {
    resourceGroupName: "test-static-site",
    location: location,
    name: getResourceName(projectResources.staticSite),
    repositoryToken: deploymentToken
  });

现在,您需要从CLI导出此值,如下所示:

pulumi stack output deploymentToken --show-secrets

使用以下步骤将此变量输入到管道中:https://learn.microsoft.com/en-us/azure/static-web-apps/publish-devops#create-the-pipeline-task-in-azure-devops

相关问题