Provider di API: condivisione del nome di dominio personalizzato privato tramite la AWS CLI di Gateway API - Amazon API Gateway

Provider di API: condivisione del nome di dominio personalizzato privato tramite la AWS CLI di Gateway API

Puoi condividere un nome di dominio personalizzato privato tramite la AWS CLI di Gateway API, ma è consigliabile utilizzare AWS RAM per ridurre i costi operativi. Per istruzioni su come utilizzare AWS RAM per condividere un nome di dominio personalizzato privato consulta Provider di API: condivisione del nome di dominio personalizzato privato tramite AWS RAM.

Per condividere un nome di dominio personalizzato privato utilizzando la AWS CLI di Gateway API, concedi ad altri Account AWS l'accesso per creare associazioni di accesso ai nomi di dominio e invocare il tuo nome di dominio personalizzato privato. A tale scopo, è necessario aggiornare la managementPolicy del servizio di gestione di Gateway API e la policy per il servizio execute-api per il tuo nome di dominio personalizzato privato. Devi anche concedere l'accesso all'endpoint VPC del consumatore di API nella policy delle risorse per tutte le API private mappate al tuo nome di dominio personalizzato privato.

Il consumatore di API dovrà comunque creare un'associazione di accesso al nome di dominio tra il suo endpoint VPC e il tuo nome di dominio personalizzato privato. Non puoi farlo tu al suo posto.

Concedere l'accesso al nome di dominio personalizzato privato

Per concedere l'accesso al tuo nome di dominio personalizzato privato
  1. Per aggiornare la managementPolicy del servizio di gestione di Gateway API, è necessario creare un file JSON contenente l'operazione di patch per l'aggiornamento della policy. La seguente patch-managementPolicy.json sostituisce la managementPolicy corrente con una policy di esempio che concede l'accesso agli Account AWS 111122223333 e 444455556666 per creare associazioni di accesso ai nomi di dominio con il nome di dominio personalizzato privato private.example.com.

    [{ "op": "replace", "path": "/managementPolicy", "value": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"AWS\":[\"arn:aws:iam::111122223333:root\", \"arn:aws:iam::444455556666:root\"]},\"Action\":\"apigateway:CreateAccessAssociation\",\"Resource\":\"arn:aws:apigateway:us-west-2:111122223333:/domainnames/private.example.com+abcd1234\"}]}" }]

    Il seguente comando update-domain-name aggiorna la managementPolicy tramite patch-managementPolicy.json.

    aws apigateway update-domain-name \ --domain-name private.example.com \ --domain-name-id abcd1234 \ --patch-operations file://patch-managementPolicy.json

    Una volta concesso l'accesso, devi notificare al consumatore di API che può formare l'associazione di accesso ai nomi di dominio. Se usi AWS RAM, AWS RAM eseguirà automaticamente questo passaggio.

  2. Per aggiornare la policy per il servizio execute-api, è necessario creare un file JSON contenente l'operazione di patch per l'aggiornamento della policy. Il seguente patch-policy.json sostituisce la policy corrente con una policy di esempio che consente a due endpoint VPC di invocare il nome di dominio personalizzato privato private.example.com.

    [{ "op": "replace", "path": "/policy", "value": "{\"Version\": \"2012-10-17\",\"Statement\": [{\"Effect\": \"Allow\",\"Principal\": \"*\",\"Action\": \"execute-api:Invoke\",\"Resource\": \"arn:aws:execute-api:us-west-2:111122223333:/domainnames/private.example.com+abcd1234\"},{\"Effect\": \"Deny\",\"Principal\": \"*\",\"Action\": \"execute-api:Invoke\",\"Resource\": \"arn:aws:execute-api:us-west-2:111122223333:/domainnames/private.example.com+abcd1234\",\"Condition\": {\"StringNotEquals\": {\"aws:SourceVpce\": [\"vpce-abcd1234\",\"vpce-xyzz0000\"]}}}]}" }]

    Il seguente comando update-domain-name aggiorna la policy tramite patch-policy.json.

    aws apigateway update-domain-name \ --domain-name private.example.com \ --domain-name-id abcd1234 \ --patch-operations file://patch-policy.json

Negare l'accesso al nome di dominio personalizzato privato

Per interrompere la condivisione del tuo nome di dominio personalizzato privato, devi rifiutare l'associazione di accesso al nome di dominio tra il tuo nome di dominio personalizzato privato e l'endpoint VPC del consumatore di API.

Per negare l'accesso al nome di dominio personalizzato privato
  1. Il seguente comando reject-domain-name-access-association rifiuta l'associazione di accesso al nome di dominio.

    aws apigateway reject-domain-name-access-association \ --domain-name-access-association-arn arn:aws:apigateway:us-west-2:444455556666:/domainnameaccessassociations/domainname/private.example.com+abcd1234/vpcesource/vpce-abcd1234 \ --domain-name-arn arn:aws:apigateway:us-west-2:111122223333:/domainnames/private.example.com+abcd1234
  2. Modifica patch-managementPolicy.json per rimuovere l'accesso che consente all'account del provider di API di creare un'associazione di accesso al nome di dominio con il tuo nome di dominio personalizzato privato. Il seguente patch-managementPolicy.json rimuove un account dalla managementPolicy:

    [{ "op": "replace", "path": "/managementPolicy", "value": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":\"*\",\"Action\":\"apigateway:CreateAccessAssociation\",\"Resource\":\"arn:aws:apigateway:us-west-2:111122223333:/domainnames/private.example.com+abcd1234\"}]}" }]

    Il seguente comando update-domain-name aggiorna la managementPolicy tramite patch-managementPolicy.json.

    aws apigateway update-domain-name \ --domain-name private.example.com \ --domain-name-id abcd1234 \ --patch-operations file://patch-managementPolicy.json
  3. Modifica patch-policy.json per rimuovere l'accesso che consente all'endpoint VPC del provider di API di invocare il tuo nome di dominio personalizzato privato. Il seguente patch-policy.json rimuove l'ID dell'endpoint VPC dalla policy:

    [{ "op": "replace", "path": "/policy", "value": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":\"*\",\"Action\":\"execute-api:Invoke\",\"Resource\":\"arn:aws:execute-api:us-west-2:111122223333:/domainnames/private.example.com+abcd1234\"},{\"Effect\":\"Deny\",\"Principal\":\"*\",\"Action\":\"execute-api:Invoke\",\"Resource\":\"arn:aws:execute-api:us-west-2:111122223333:/domainnames/private.example.com+abcd1234\",\"Condition\":{\"StringNotEquals\":{\"aws:SourceVpce\":\"vpce-abcd1234\"}}}]}" }]

    Il seguente comando update-domain-name aggiorna la policy tramite patch-policy.json.

    aws apigateway update-domain-name \ --domain-name private.example.com \ --domain-name-id abcd1234 \ --patch-operations file://patch-policy.json

Policy di esempio utilizzate in questa procedura

Nella sezione seguente sono illustrate le policy di esempio utilizzate nella procedura precedente.

La seguente policy di esempio riguarda managementPolicy per il servizio di gestione di Gateway Amazon API. Questa policy concede l'accesso agli Account AWS 111122223333 e 444455556666 per creare associazioni di accesso ai nomi di dominio con il nome di dominio personalizzato privato private.example.com.

JSON
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "111122223333", "444455556666" ] }, "Action": "apigateway:CreateAccessAssociation", "Resource": "arn:aws:apigateway:us-west-2:111122223333:/domainnames/private.example.com+a1b2c3" } ] }

La seguente policy di esempio riguarda la policy per il servizio execute-api. Questa policy concede l'accesso agli endpoint VPC vpce-abcd1234 e vpce-xyzz0000 per invocare il nome di dominio personalizzato privato.

JSON
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "execute-api:Invoke", "Resource": "arn:aws:execute-api:us-west-2:111122223333:/domainnames/private.example.com+abcd1234" }, { "Effect": "Deny", "Principal": "*", "Action": "execute-api:Invoke", "Resource": "arn:aws:execute-api:us-west-2:111122223333:/domainnames/private.example.com+abcd1234", "Condition": { "StringNotEquals": { "aws:SourceVpce": [ "vpce-abcd1234", "vpce-xyzz0000" ] } } } ] }