As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Depois de criar um Hook personalizado, você precisa registrá-lo AWS CloudFormation para poder usá-lo. Nesta seção, você aprenderá a empacotar e registrar seu Hook para uso em seu Conta da AWS.
Package a Hook (Java)
Se você desenvolveu seu Hook com Java, use o Maven para empacotá-lo.
No diretório do seu projeto Hook, execute o comando a seguir para criar seu Hook, executar testes de unidade e empacotar seu projeto como um JAR
arquivo que você pode usar para enviar seu Hook ao CloudFormation registro.
mvn clean package
Registre um gancho personalizado
Para registrar um Hook
-
(Opcional) Configure seu Região da AWS nome padrão para
us-west-2
, enviando o configureoperação.$
aws configureAWS Access Key ID [None]:
<Your Access Key ID>
AWS Secret Access Key [None]:
<Your Secret Key>
Default region name [None]:
us-west-2
Default output format [None]:
json
-
(Opcional) O comando a seguir cria e empacota seu projeto Hook sem registrá-lo.
$
cfn submit --dry-run -
Registre seu Hook usando o CloudFormation CLI submitoperação.
$
cfn submit --set-defaultO comando retorna o seguinte comando.
{‘ProgressStatus’: ‘COMPLETE’}
Resultados: Você registrou seu Hook com sucesso.
Verificando se os Hooks estão acessíveis em sua conta
Verifique se o seu Hook está disponível em você Conta da AWS e nas regiões para as quais você o enviou.
-
Para verificar seu Hook, use o list-typescomando para listar seu Hook recém-registrado e retornar uma descrição resumida dele.
$
aws cloudformation list-typesO comando retorna a seguinte saída e também mostra Hooks disponíveis publicamente que você pode ativar em suas Conta da AWS regiões.
{ "TypeSummaries": [ { "Type": "HOOK", "TypeName": "MyCompany::Testing::MyTestHook", "DefaultVersionId": "00000001", "TypeArn": "arn:aws:cloudformation:us-west-2:
ACCOUNT_ID
/type/hook/MyCompany-Testing-MyTestHook", "LastUpdated": "2021-08-04T23:00:03.058000+00:00", "Description": "Verifies S3 bucket and SQS queues properties before creating or updating" } ] } -
Recupere a
list-type
saídaTypeArn
do seu Hook e salve-a.export HOOK_TYPE_ARN=arn:aws:cloudformation:us-west-2:
ACCOUNT_ID
/type/hook/MyCompany-Testing-MyTestHook
Para saber como publicar Hooks para uso público, consulteLivros de publicação para uso público.
Configurar ganchos
Depois de desenvolver e registrar seu Hook, você pode configurar seu Hook no seu Conta da AWS publicando-o no registro.
-
Para configurar um Hook em sua conta, use o SetTypeConfigurationoperação. Essa operação ativa as propriedades do hook que são definidas na seção
properties
do esquema do hook. No exemplo a seguir, aminBuckets
propriedade está definida como1
na configuração.nota
Ao habilitar Hooks em sua conta, você está autorizando um Hook a usar as permissões definidas do seu. Conta da AWS CloudFormation remove as permissões não necessárias antes de passar suas permissões para o Hook. CloudFormation recomenda que os clientes ou usuários do Hook revisem as permissões do Hook e estejam cientes de quais permissões os Hooks têm permissão antes de habilitar os Hooks em sua conta.
Especifique os dados de configuração da sua extensão Hook registrada na mesma conta Região da AWS e.
$
aws cloudformation set-type-configuration --region us-west-2 --configuration '{"CloudFormationConfiguration":{"HookConfiguration":{"HookInvocationStatus":"ENABLED","FailureMode":"FAIL","Properties":{"minBuckets": "1","minQueues": "1", "encryptionAlgorithm": "aws:kms"}}}}' --type-arn $HOOK_TYPE_ARN
Importante
Para permitir que seu Hook inspecione proativamente a configuração de sua pilha, você deve
HookInvocationStatus
definir o númeroENABLED
naHookConfiguration
seção, após o Hook ter sido registrado e ativado em sua conta.
Acessando AWS APIs em manipuladores
Se seus Hooks usam um AWS API em qualquer um de seus manipuladores, o CFN - cria CLI automaticamente um modelo de função de IAM execução,. hook-role.yaml
O hook-role.yaml
modelo é baseado nas permissões especificadas para cada manipulador na seção do manipulador do esquema Hook. Se a --role-arn
bandeira não for usada durante o generateoperação, a função nessa pilha será provisionada e usada como a função de execução do Hook.
Para obter mais informações, consulte Acessando AWS APIs a partir de um tipo de recurso.
modelo hook-role.yaml
nota
Se você optar por criar sua própria função de execução, é altamente recomendável praticar o princípio do privilégio mínimo, permitindo apenas listar e. hooks.cloudformation.amazonaws.com
resources.cloudformation.amazonaws.com
O modelo a seguir usa IAM as permissões Amazon S3 e AmazonSQS.
AWSTemplateFormatVersion: 2010-09-09
Description: >
This CloudFormation template creates a role assumed by CloudFormation during
Hook operations on behalf of the customer.
Resources:
ExecutionRole:
Type: 'AWS::IAM::Role'
Properties:
MaxSessionDuration: 8400
AssumeRolePolicyDocument:
Version: 2012-10-17
Statement:
- Effect: Allow
Principal:
Service:
- resources.cloudformation.amazonaws.com
- hooks.cloudformation.amazonaws.com
Action: 'sts:AssumeRole'
Condition:
StringEquals:
aws:SourceAccount: !Ref AWS::AccountId
StringLike:
aws:SourceArn: !Sub arn:${AWS::Partition}:cloudformation:${AWS::Region}:${AWS::AccountId}:type/hook/MyCompany-Testing-MyTestHook/*
Path: /
Policies:
- PolicyName: HookTypePolicy
PolicyDocument:
Version: 2012-10-17
Statement:
- Effect: Allow
Action:
- 's3:GetEncryptionConfiguration'
- 's3:ListBucket'
- 's3:ListAllMyBuckets'
- 'sqs:GetQueueAttributes'
- 'sqs:GetQueueUrl'
- 'sqs:ListQueues'
Resource: '*'
Outputs:
ExecutionRoleArn:
Value: !GetAtt
- ExecutionRole
- Arn