NoCredentialProviders:链中没有有效的提供者。不推荐使用。 (DNSControl)

时间:2020-07-28 15:25:46

标签: amazon-web-services dns gcloud

我正在尝试实现dnscontrol以使用路由53,但是当我运行任何命令(例如“ dnscontrol get-zones gcloud GCLOUD mydomain.com”)时,似乎看不到creds.json文件中的内容

它返回错误:

NoCredentialProviders:链中没有有效的提供者。不推荐使用。 有关详细消息传递,请参阅aws.Config.CredentialsChainVerboseErrors


我确实以以下格式将凭据放入creds.json内:

{ “ r53_main”:{ “ KeyId”:“ mywhateverkeyid”, “ SecretKey”:“ mywhateversecretkey” } }

我的gcloud凭据在同一creds.json文件中可以正常工作。

谢谢

1 个答案:

答案 0 :(得分:1)

如果您要针对Google(Cloud DNS)进行身份验证,则需要使用here中所述的(Google)服务帐户JSON密钥。

看来您可能正在尝试使用here中所述的Route 53凭据。

示例

PROJECT=[[PROJECT]]
BILLING=[[BILLING]]
DNSNAME=[[DNSNAME]]
ACCOUNT=[[ACCOUNT]]

gcloud projects create ${PROJECT}
gcloud beta billing projects link ${PROJECT} --billing-account=${BILLING}
gcloud services enable dns.googleapis.com --project=${PROJECT}

# Create a test DNS Managed Zone
gcloud dns managed-zones create test \
--description=test \
--dns-name=${DNSNAME} \
--project=${PROJECT}

# Create a Service Account (permitted to use DNS) and Key
gcloud iam service-accounts create ${ACCOUNT} --project=${PROJECT}

gcloud projects add-iam-policy-binding ${PROJECT} \
--member=serviceAccount:${ACCOUNT}@${PROJECT}.iam.gserviceaccount.com \
--role=roles/dns.admin

gcloud iam service-accounts keys create ./${ACCOUNT}.json \
--iam-account=${ACCOUNT}@${PROJECT}.iam.gserviceaccount.com \
--project=${PROJECT}

然后您需要将密钥合并到creds.json中:

echo "{\"gcloud\":$(cat ./${ACCOUNT}.json)}" > ./creds.json

然后:

./dnscontrol check-creds gcloud GCLOUD
${DNSNAME}

./dnscontrol get-zones gcloud GCLOUD ${DNSNAME}
$ORIGIN ${DNSNAME}.
$TTL 300
@          21600 IN NS    ns-cloud-b1.googledomains.com.
           21600 IN NS    ns-cloud-b2.googledomains.com.
           21600 IN NS    ns-cloud-b3.googledomains.com.
           21600 IN NS    ns-cloud-b4.googledomains.com.