我正在尝试运行一个部署存储容器的 terraform 部署。初始部署有效(由于尚未到位 IP 过滤),但随后失败。运行 terraform plan 时,我得到以下信息:
Error: retrieving Container "xxxx" (Account "xxxx" / Resource Group "xxx"): containers.Client#GetProperties: Failure responding to request: StatusCode=403 -- Original Error: autorest/azure: Service returned an error. Status=403 Code="AuthorizationFailure" Message="This request is not authorized to perform this operation.\nRequestId:62a85c92-901e-0021-12de-816608000000\nTime:2022-06-17T00:11:56.2063816Z"
Run Code Online (Sandbox Code Playgroud)
根据一些研究和调试,当存储容器没有将托管管道代理的 IP 列入白名单时,就会发生这种情况。
我修改了管道,以便检索代理的 IP 并将其添加为防火墙规则。然后,我添加了不同时间的睡眠(最多 5 分钟),尝试为规则生效留出时间,但它从未起作用。
这是我的管道的片段:
- task: AzureCLI@2
inputs:
azureSubscription: '$(azureSubscription)'
scriptType: 'bash'
scriptLocation: 'inlineScript'
inlineScript: |
agentIP=$(curl -s https://api.ipify.org/)
az storage account network-rule add -g xxx --account-name xxx --ip-address $agentIP
sleep 300 …Run Code Online (Sandbox Code Playgroud) azure terraform azure-blob-storage azure-devops azure-pipelines
我试图列出 S3 存储桶中特定目录下的所有文件(我知道 S3 并没有真正的目录。)。
结构是:
Bucket-Name:Folder1/Folder2/Folder3/file
所以在 S3 世界中,我相信这只是存储一个名为上述的文件。
这是我的代码:
params := &s3.ListObjectsV2Input{
Bucket: aws.String(os.Getenv("S3_USER_BUCKET")),
Prefix: aws.String(key + loc[0] + "/"),
}
resp, _ := svc.ListObjectsV2(params)
Run Code Online (Sandbox Code Playgroud)
包含resp我期望的文件,以及它存储在的“目录”:
Contents: [{
ETag: "\"TAG\"",
Key: "Folder1/Folder2/Folder3/",
LastModified: 2023-03-02 17:32:17 +0000 UTC,
Size: 0,
StorageClass: "STANDARD"
},{
ETag: "\"TAG\"",
Key: "Folder1/Folder2/Folder3/file",
LastModified: 2023-03-02 17:32:30 +0000 UTC,
Size: 106808,
StorageClass: "STANDARD"
}],
IsTruncated: false,
KeyCount: 2,
MaxKeys: 1000,
Name: "BUCKET",
Prefix: "Folder1/Folder2/Folder3/"
}
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
params := &s3.ListObjectsV2Input{
Bucket: aws.String(os.Getenv("S3_USER_BUCKET")),
Prefix: aws.String(key + …Run Code Online (Sandbox Code Playgroud) 我已经通过 Terraform 部署了 Azure HTTP 函数应用程序,我想通过 API 管理来管理对 HTTP 函数的访问。我可以看到如何通过 Terraform 创建 API 管理,但是我看不到如何将我的函数应用程序与 API 管理结合起来。通过控制台,这非常简单。我如何通过 terraform 做到这一点?