我正在尝试实现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文件中可以正常工作。
谢谢
答案 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.