Azure コンテナー レジストリの特定のコンテナー リポジトリの属性を取得できません。
これを実行するために奇妙な組み合わせも試しました。
試行 1
loginURI := "https://management.azure.com/subscriptions/" + subscriptionId + "/resourceGroups/" + resourceGroupName + "/providers/Microsoft.ContainerRegistry/registries/" + registryName + ".azurecr.io"
試行 1 エラー メッセージ
azure: Service returned an error. Status=400 Code="MissingApiVersionParameter" Message="The api-version query parameter (?api-version=) is required for all requests."
試行 2
loginURI := "https://" + registryName + ".azurecr.io/acr/v1/hello-world"
試行 3
loginURI := "https://management.azure.com/subscriptions/" + subscriptionId + "/resourceGroups/" + resourceGroupName + "/providers/Microsoft.ContainerRegistry/registries/" + registryName + ".azurecr.io?api-version=2019-08-15-preview"
試行 3 エラー メッセージ
2020/04/28 13:33:45 Error while fetching location list, containerregistry.RepositoryClient#GetAttributes: Failure responding to request: StatusCode=400 -- Original Error: autorest/
azure: Service returned an error. Status=400 Code="NoRegisteredProviderFound" Message="No registered resource provider found for location 'westus' and API version '2019-08-15-previ
ew/acr/v1/hello-world?api-version=2019-08-15-preview' for type 'registries'. The supported api-versions are '2016-06-27-preview, 2017-03-01, 2017-10-01, 2019-05-01, 2019-12-01-prev
iew, 2017-06-01-preview'. The supported locations are 'westus, eastus, southcentralus, westeurope, northeurope, uksouth, ukwest, australiaeast, australiasoutheast, centralindia, ko
reacentral, francecentral, southafricanorth, uaenorth, eastasia, japaneast, japanwest, southeastasia, southindia, brazilsouth, canadaeast, canadacentral, centralus, eastus2, northc
entralus, westcentralus, westus2, switzerlandnorth'."
しかし、属性を取得している間はまだ運がありません
ここで何か間違ったことをしている場合、誰かが私を正すことを提案できますか? これは、コンテナ リポジトリ クライアントに loginURI を提供する正しい方法ですか? 同じものに ApiVersion を指定する必要がありますか? はいの場合、どうすればよいですか? ACR のリポジトリで使用できる例はありますか?参照できます。
サンプルコードはここにあります
Go バージョン go1.14.2 windows/amd64
package main
import (
"context"
"fmt"
"github.com/Azure/azure-sdk-for-go/profiles/preview/preview/containerregistry/runtime/containerregistry"
"github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2015-11-01/subscriptions"
"github.com/Azure/go-autorest/autorest/azure/auth"
"log"
"os"
)
func main() {
subscriptionId := ""
clientId := ""
clientSecret := ""
tenantId := ""
resourceGroupName := ""
registryName := "test"
repositoryName := "hello-world"
err := os.Setenv("AZURE_CLIENT_ID", clientId)
if err != nil {
log.Printf("Error while setting env variable, %v ", err)
}
err = os.Setenv("AZURE_CLIENT_SECRET", clientSecret)
if err != nil {
log.Printf("Error while setting env variable, %v ", err)
}
err = os.Setenv("AZURE_TENANT_ID", tenantId)
if err != nil {
log.Printf("Error while setting env variable, %v ", err)
}
err = os.Setenv("AZURE_SUBSCRIPTION_ID", subscriptionId)
if err != nil {
log.Printf("Error while setting env variable, %v ", err)
}
authorizer, err := auth.NewAuthorizerFromEnvironment()
if err != nil {
log.Printf("Error while creating an new authentication, %v ", err)
}
loginURI := "https://management.azure.com/subscriptions/" + subscriptionId + "/resourceGroups/" + resourceGroupName + "/providers/Microsoft.ContainerRegistry/registries/"
subscriptionsClient := containerregistry.NewRepositoryClient(loginURI)
subscriptionsClient.Authorizer = authorizer
attributes, err2 := subscriptionsClient.GetAttributes(context.Background(), registryName+ "/"+ repositoryName)
if err2 != nil {
log.Printf("Error while fetching attributes, %v ", err)
}
fmt.Print(attributes)
}