visualização
Ainda estamos trabalhando nesse recurso, mas adoraríamos que você experimentasse!
Atualmente, esse recurso é fornecido como parte de um programa de visualização de acordo com nossas políticas de pré-lançamento.
Esta página fornece uma referência completa para as ações do AWS Systems Manager disponíveis no catálogo de ações de automação de fluxo de trabalho. Essas ações permitem que você automatize o gerenciamento de sistemas e documente as operações.
Pré-requisitos
Antes de usar as ações AWS na automação do fluxo de trabalho, certifique-se de ter:
- Uma conta da AWS com as permissões apropriadas.
- Credenciais da AWS configuradas (credenciais de usuário do IAM, ARN da função do IAM ou credenciais de sessão).
- As permissões IAM necessárias para os serviços específicos da AWS que você planeja usar.
Consulte Configurar credenciais AWS para obter informações sobre como criar usuários e funções do IAM e configurar credenciais estáticas e de sessão AWS para integração com as ações de automação de fluxo de trabalho AWS.
Crie um documento SSM para a conta AWS com base nas credenciais da AWS fornecidas no campo de entrada da ação. Consulte a documentação do AWS Systems Manager.
Campo de entrada | Opcionalidade | Tipo | Exemplo |
|---|---|---|---|
awsRoleArn | Opcional | Corda |
|
awsAccessKeyId | Opcional | Corda |
|
awsSecretAccessKey | Opcional | Corda |
|
awsSessionToken | Opcional | Corda |
|
região | Obrigatório | Corda |
|
documentName | Obrigatório | Corda |
|
documentType | Opcional | Corda |
Verifique os valores válidos aqui. |
documentFormat | Opcional | Corda |
Verifique os valores válidos aqui. |
documentContent | Obrigatório | Corda | Confira o exemplo |
override | Opcional | Boleano |
Quando Quando |
seletores | Opcional | list |
|
Campo de saída | Tipo | Descrição e exemplo |
|---|---|---|
documentName | Corda |
|
documentVersion | Corda |
|
documentType | Corda |
|
documentStatus | Corda |
O valor será um dos status daqui. |
sucesso | Boleano |
|
mensagem de erro | Corda |
|
Importante
- Na entrada de ação, somente
awsAccessKeyIdeawsSecretAccessKeypodem ser fornecidos, mas devem ser credenciais estáticas de um usuário IAM. - Se as credenciais da sessão forem usadas,
awsAccessKeyId,awsSecretAccessKeyeawsSessionTokendevem ser passados para a entrada de ação. - Os seletores permitem obter como saída apenas o parâmetro especificado.
- Consulte as credenciais da AWS para obter instruções.
Exemplo 1: Um documento SSM simples para listar todas as funções Lambda.
schemaVersion: '0.3' description: List all Lambda function names. mainSteps: - name: ExecuteAwsApi action: aws:executeAwsApi isEnd: true inputs: Service: lambda Api: ListFunctions outputs: - Name: resultFunctionName Selector: $..FunctionName Type: StringList outputs: - ExecuteAwsApi.resultFunctionNameDefinição completa de fluxos automáticos com listagem SSM da função Lambda
name: aws-api
workflowInputs: key: type: String defaultValue: "${{ :secrets:11933347:USERNAME_AWS_ACCESS_KEY_ID }}" access: type: String defaultValue: "${{ :secrets:11933347:USERNAME_AWS_SECRET_ACCESS_KEY }}" token: type: String defaultValue: "${{ :secrets:11933347:USERNAME_AWS_SESSION_TOKEN }}" region: type: String defaultValue: us-east-2
steps: - name: createSsmDocument type: action action: aws.systemsManager.writeDocument version: 1 inputs: awsAccessKeyId: ${{ .workflowInputs.key }} awsSecretAccessKey: ${{ .workflowInputs.access }} awsSessionToken: ${{ .workflowInputs.token }} region: ${{ .workflowInputs.region }} selectors: - name: documentName expression: '.documentName' - name: documentType expression: '.documentType' - name: documentStatus expression: '.documentStatus' - name: success expression: '.success' documentName: "LambdaListFunctionNames" documentContent: | schemaVersion: '0.3' description: List all Lambda function names. mainSteps: - name: ExecuteAwsApi action: aws:executeAwsApi isEnd: true inputs: Service: lambda Api: ListFunctions outputs: - Name: resultFunctionName Selector: $..FunctionName Type: StringList outputs: - ExecuteAwsApi.resultFunctionName
- name: generateIdempotencyToken type: action action: utils.uuid.generate version: 1
- name: start1 type: action action: aws.systemsManager.startAutomation version: 1 inputs: awsAccessKeyId: ${{ .workflowInputs.key }} awsSecretAccessKey: ${{ .workflowInputs.access }} awsSessionToken: ${{ .workflowInputs.token }} region: ${{ .workflowInputs.region }} documentName: "${{ .steps.createSsmDocument.outputs.documentName }}" idempotencyToken: ${{ .steps.generateIdempotencyToken.outputs.uuid }}
- name: waitForCompletion type: action action: aws.systemsManager.waitForAutomationStatus version: 1 inputs: awsAccessKeyId: ${{ .workflowInputs.key }} awsSecretAccessKey: ${{ .workflowInputs.access }} awsSessionToken: ${{ .workflowInputs.token }} region: ${{ .workflowInputs.region }} automationExecutionId: ${{ .steps.start1.outputs.automationExecutionId }} # Optional, default is Success and Failed automationExecutionStatuses: - "Success" - "Failed" timeout: 60
- name: hasCompleted type: switch switch: - condition: ${{ .steps.waitForCompletion.outputs.automationExecutionStatus == "Failed" }} next: displayError - condition: ${{ .steps.waitForCompletion.outputs.automationExecutionStatus == "Success" }} next: displaySuccess next: displayUnexpected
- name: displayUnexpected type: action action: newrelic.instrumentation.log version: 1 inputs: message: "Unexpected status ${{ .steps.waitForCompletion.outputs.automationExecutionStatus | tojson }}" next: cleanupSsmDocument
- name: displaySuccess type: action action: newrelic.instrumentation.log version: 1 inputs: message: "This is all the lambda function names on the region ${{ .workflowInputs.region }}:${{ .steps.waitForCompletion.outputs.automationExecutionOutputs.ExecuteAwsApi.resultFunctionName | join(\",\") }}" next: cleanupSsmDocument
- name: displayError type: action action: newrelic.instrumentation.log version: 1 inputs: message: "Error while executing document ${{ .steps.createSsmDocument.outputs.documentName }}, detail: ${{ .steps.waitForCompletion.outputs.errorMessage }}" next: cleanupSsmDocument
- name: cleanupSsmDocument type: action action: aws.systemsManager.deleteDocument version: 1 inputs: awsAccessKeyId: ${{ .workflowInputs.key }} awsSecretAccessKey: ${{ .workflowInputs.access }} awsSessionToken: ${{ .workflowInputs.token }} region: ${{ .workflowInputs.region }} documentName: ${{ .steps.createSsmDocument.outputs.documentName }}Exemplo 2: Executar um script Python
Usando a automação AWS SystemsManager e a ação de documento, podemos definir uma definição de fluxo de trabalho que execute um script Python.
Aqui está um breve exemplo ilustrativo com um aplicativo simples "Olá, Mundo!".
schemaVersion: '0.3' description: "Run a Python script that says 'Hello' to the username passed as input and capture the output." parameters: Username: type: String description: "The username to greet." default: "User" mainSteps: - action: aws:executeScript name: pythonStep inputs: Runtime: python3.8 Handler: script_handler Script: | def script_handler(event, context): username = event['username'] return f'Hello {username}' InputPayload: username: "{{ Username }}" outputs: - Name: scriptOutput Type: String Selector: $.Payload outputs: - pythonStep.scriptOutputIsso pode então ser usado no fluxo de trabalho abaixo:
name: aws-python-script
workflowInputs: key: type: String defaultValue: "${{ :secrets:11933347:USERNAME_AWS_ACCESS_KEY_ID }}" access: type: String defaultValue: "${{ :secrets:11933347:USERNAME_AWS_SECRET_ACCESS_KEY }}" token: type: String defaultValue: "${{ :secrets:11933347:USERNAME_AWS_SESSION_TOKEN }}" region: type: String defaultValue: us-west-2 name: type: String defaultValue: ExecuteHelloPythonScript username: type: String defaultValue: World!
steps: - name: generateIdempotencyToken type: action action: utils.uuid.generate version: 1
- name: createSsmDocument type: action action: aws.systemsManager.writeDocument version: 1 inputs: awsAccessKeyId: ${{ .workflowInputs.key }} awsSecretAccessKey: ${{ .workflowInputs.access }} awsSessionToken: ${{ .workflowInputs.token }} region: ${{ .workflowInputs.region }} documentName: ${{ .workflowInputs.name }} documentContent: | schemaVersion: '0.3' description: "Run a Python script that says 'Hello' to the username passed as input and capture the output." parameters: Username: type: String description: "The username to greet." default: "User" mainSteps: - action: aws:executeScript name: pythonStep inputs: Runtime: python3.8 Handler: script_handler Script: | def script_handler(event, context): username = event['username'] return f'Hello {username}' InputPayload: username: "{{ Username }}" outputs: - Name: scriptOutput Type: String Selector: $.Payload outputs: - pythonStep.scriptOutput
- name: start1 type: action action: aws.systemsManager.startAutomation version: 1 inputs: awsAccessKeyId: ${{ .workflowInputs.key }} awsSecretAccessKey: ${{ .workflowInputs.access }} awsSessionToken: ${{ .workflowInputs.token }} region: ${{ .workflowInputs.region }} documentName: "${{ .steps.createSsmDocument.outputs.documentName }}" idempotencyToken: ${{ .steps.generateIdempotencyToken.outputs.uuid }} parameters: Username: ${{ .workflowInputs.username }}
- name: waitForCompletion type: action action: aws.systemsManager.waitForAutomationStatus version: 1 inputs: awsAccessKeyId: ${{ .workflowInputs.key }} awsSecretAccessKey: ${{ .workflowInputs.access }} awsSessionToken: ${{ .workflowInputs.token }} region: ${{ .workflowInputs.region }} automationExecutionId: ${{ .steps.start1.outputs.automationExecutionId }} # Optional, default is Success and Failed automationExecutionStatuses: - "Success" - "Failed" timeout: 300
- name: hasCompleted type: switch switch: - condition: ${{ .steps.waitForCompletion.outputs.automationExecutionStatus == "Failed" }} next: displayError - condition: ${{ .steps.waitForCompletion.outputs.automationExecutionStatus == "Success" }} next: displaySuccess next: displayUnexpected
- name: displayUnexpected type: action action: newrelic.instrumentation.log version: 1 inputs: message: "Unexpected status ${{ .steps.waitForCompletion.outputs.automationExecutionStatus | tojson }}" next: cleanupSsmDocument
- name: displaySuccess type: action action: newrelic.instrumentation.log version: 1 inputs: message: "This is the results of the automation that was run on the region ${{ .workflowInputs.region }}:${{ .steps.waitForCompletion.outputs.automationExecutionOutputs.pythonStep.scriptOutput | tojson }}" next: cleanupSsmDocument
- name: displayError type: action action: newrelic.instrumentation.log version: 1 inputs: message: "Error while executing document ${{ .steps.createSsmDocument.outputs.documentName }}, detail: ${{ .steps.waitForCompletion.outputs | tojson }}" next: cleanupSsmDocument
- name: cleanupSsmDocument type: action action: aws.systemsManager.deleteDocument version: 1 inputs: awsAccessKeyId: ${{ .workflowInputs.key }} awsSecretAccessKey: ${{ .workflowInputs.access }} awsSessionToken: ${{ .workflowInputs.token }} region: ${{ .workflowInputs.region }} documentName: ${{ .steps.createSsmDocument.outputs.documentName }}Isso pode ser iniciado com a seguinte mutação NerdGraph, assumindo que os segredos temporários da AWS foram previamente armazenados com as mutações secretsManagementCreateSecretNerdGraph.
mutation { autoflowsStartWorkflowRun(accountId: 11933347, definition: { name: "aws-python-script", }, workflowInputs: [ {key: "key" value: "${{ :secrets:testUser123_AWS_ACCESS_KEY_ID }}"} {key: "access" value: "${{ :secrets:testUser123_AWS_SECRET_ACCESS_KEY }}"} {key: "token" value: "${{ :secrets:testUser123_AWS_SESSION_TOKEN }}"} {key: "region" value:"us-west-2"} {key: "username" value: "Julien"} ]) { runId } }Executar a mutação acima retorna um runId, por exemplo 207e8c23-2c89-4af2-a74f-3c9ea2ffd543. Esse runId pode então ser usado para consultar os logs e visualizar a seguinte saída:

Exemplo 3: Um documento SSM mais complexo
- Obtenha a lista de APIs REST do gateway de API. Filtre minha API (
Test API) e obtenha o ID da API REST. - Obtenha a lista de todos os recursos dentro da minha API (
Test API). Filtrar meu recurso específico com base em pathPart(/test) e obter o resourceID - Obtenha a lista de versões para minha função do Lambda (
ApiGwTestFn). Filtre a versão específica para a qual deseja reverter (versão: 1) e obtenha o functionArn dessa versão. - Atualize a integração do gateway de API com o ARN da função Lambda obtido na etapa anterior.
- Crie uma nova implantação para minha API REST (
Test API).
schemaVersion: '0.3' description: Test SSM for API gateway rollback mainSteps: - name: ExecuteAwsApi action: aws:executeAwsApi nextStep: ExecuteGetApiResources inputs: Service: apigateway Api: GetRestApis outputs: - Name: resultApiId Selector: $.items[?(@.name=='Test API')].id Type: String - name: ExecuteGetApiResources action: aws:executeAwsApi nextStep: ExecuteListVersionsByFunction inputs: Service: apigateway Api: GetResources restApiId: '{{ ExecuteAwsApi.resultApiId }}' outputs: - Name: resultResourceId Selector: $.items[?(@.pathPart=='test')].id Type: String - name: ExecuteListVersionsByFunction action: aws:executeAwsApi nextStep: ExecuteApiGwUpdateIntg inputs: Service: lambda Api: ListVersionsByFunction FunctionName: ApiGwTestFn outputs: - Name: resultLambdaVersionArn Selector: $.Versions[?(@.Version=='1')].FunctionArn Type: String - name: ExecuteApiGwUpdateIntg action: aws:executeAwsApi nextStep: ExecuteApiGwCreateDeployment inputs: Service: apigateway Api: UpdateIntegration restApiId: '{{ ExecuteAwsApi.resultApiId }}' resourceId: '{{ ExecuteGetApiResources.resultResourceId }}' httpMethod: GET patchOperations: - op: replace path: /uri value: arn:aws:apigateway:us-east-2:lambda:path/2015-03-31/functions/{{ ExecuteListVersionsByFunction.resultLambdaVersionArn }}/invocations - name: ExecuteApiGwCreateDeployment action: aws:executeAwsApi inputs: Service: apigateway Api: CreateDeployment restApiId: '{{ ExecuteAwsApi.resultApiId }}' outputs: - ExecuteGetApiResources.resultResourceId - ExecuteListVersionsByFunction.resultLambdaVersionArnA amostra SSM produz ExecuteGetApiResources.resultResourceId e ExecuteListVersionsByFunction.resultLambdaVersionArn. Esses resultados podem ser usados em etapas posteriores na definição do fluxo de trabalho.
Esta ação tem como objetivo excluir um documento do AWS SSM na conta da AWS com base nas credenciais fornecidas no parâmetro de ação. Consulte a documentação do AWS Systems Manager.
Campo de entrada | Opcionalidade | Tipo | Exemplo |
|---|---|---|---|
awsRoleArn | Opcional | Corda |
|
awsAccessKeyId | Obrigatório | Corda |
|
awsSecretAccessKey | Obrigatório | Corda |
|
awsSessionToken | Opcional | Corda |
|
região | Obrigatório | Corda |
|
documentName | Obrigatório | Corda |
|
seletores | Opcional | Lista |
|
Campo de saída | Tipo | Exemplo |
|---|---|---|
documentName | Corda |
|
sucesso | Boleano |
|
mensagem de erro | Corda |
|
Importante
- Na entrada de ação, somente
awsAccessKeyIdeawsSecretAccessKeypodem ser fornecidos, mas devem ser credenciais estáticas de um usuário IAM. - Se as credenciais da sessão forem usadas,
awsAccessKeyId,awsSecretAccessKeyeawsSessionTokendevem ser passados para a entrada de ação. - Os seletores permitem obter como saída apenas o parâmetro especificado.
Um documento SSM simples para listar todas as funções do Lambda
schemaVersion: '0.3' description: List all Lambda function names. mainSteps: - name: ExecuteAwsApi action: aws:executeAwsApi isEnd: true inputs: Service: lambda Api: ListFunctions outputs: - Name: resultFunctionName Selector: $..FunctionName Type: StringList outputs: - ExecuteAwsApi.resultFunctionNameDefinição completa do fluxo de trabalho com SSM:
name: aws-api
workflowInputs: key: type: String defaultValue: "${{ :secrets:11933347:USERNAME_AWS_ACCESS_KEY_ID }}" access: type: String defaultValue: "${{ :secrets:11933347:USERNAME_AWS_SECRET_ACCESS_KEY }}" token: type: String defaultValue: "${{ :secrets:11933347:USERNAME_AWS_SESSION_TOKEN }}" region: type: String defaultValue: us-east-2
steps: - name: createSsmDocument type: action action: aws.systemsManager.writeDocument version: 1 inputs: awsAccessKeyId: ${{ .workflowInputs.key }} awsSecretAccessKey: ${{ .workflowInputs.access }} awsSessionToken: ${{ .workflowInputs.token }} region: ${{ .workflowInputs.region }} selectors: - name: documentName expression: '.documentName' - name: documentType expression: '.documentType' - name: documentStatus expression: '.documentStatus' - name: success expression: '.success' documentName: "LambdaListFunctionNames" documentContent: | schemaVersion: '0.3' description: List all Lambda function names. mainSteps: - name: ExecuteAwsApi action: aws:executeAwsApi isEnd: true inputs: Service: lambda Api: ListFunctions outputs: - Name: resultFunctionName Selector: $..FunctionName Type: StringList outputs: - ExecuteAwsApi.resultFunctionName
- name: generateIdempotencyToken type: action action: utils.uuid.generate version: 1
- name: start1 type: action action: aws.systemsManager.startAutomation version: 1 inputs: awsAccessKeyId: ${{ .workflowInputs.key }} awsSecretAccessKey: ${{ .workflowInputs.access }} awsSessionToken: ${{ .workflowInputs.token }} region: ${{ .workflowInputs.region }} documentName: "${{ .steps.createSsmDocument.outputs.documentName }}" idempotencyToken: ${{ .steps.generateIdempotencyToken.outputs.uuid }}
- name: waitForCompletion type: action action: aws.systemsManager.waitForAutomationStatus version: 1 inputs: awsAccessKeyId: ${{ .workflowInputs.key }} awsSecretAccessKey: ${{ .workflowInputs.access }} awsSessionToken: ${{ .workflowInputs.token }} region: ${{ .workflowInputs.region }} automationExecutionId: ${{ .steps.start1.outputs.automationExecutionId }} # Optional, default is Success and Failed automationExecutionStatuses: - "Success" - "Failed" timeout: 60
- name: hasCompleted type: switch switch: - condition: ${{ .steps.waitForCompletion.outputs.automationExecutionStatus == "Failed" }} next: displayError - condition: ${{ .steps.waitForCompletion.outputs.automationExecutionStatus == "Success" }} next: displaySuccess next: displayUnexpected
- name: displayUnexpected type: action action: newrelic.instrumentation.log version: 1 inputs: message: "Unexpected status ${{ .steps.waitForCompletion.outputs.automationExecutionStatus | tojson }}" next: cleanupSsmDocument
- name: displaySuccess type: action action: newrelic.instrumentation.log version: 1 inputs: message: "This is all the lambda function names on the region ${{ .workflowInputs.region }}:${{ .steps.waitForCompletion.outputs.automationExecutionOutputs.ExecuteAwsApi.resultFunctionName | join(\",\") }}" next: cleanupSsmDocument
- name: displayError type: action action: newrelic.instrumentation.log version: 1 inputs: message: "Error while executing document ${{ .steps.createSsmDocument.outputs.documentName }}, detail: ${{ .steps.waitForCompletion.outputs.errorMessage }}" next: cleanupSsmDocument
- name: cleanupSsmDocument type: action action: aws.systemsManager.deleteDocument version: 1 inputs: awsAccessKeyId: ${{ .workflowInputs.key }} awsSecretAccessKey: ${{ .workflowInputs.access }} awsSessionToken: ${{ .workflowInputs.token }} region: ${{ .workflowInputs.region }} documentName: ${{ .steps.createSsmDocument.outputs.documentName }}Inicia uma automação usando um documento do AWS SSM. Consulte a documentação do AWS Systems Manager.
Campo de entrada | Opcionalidade | Tipo | Exemplo |
|---|---|---|---|
awsRoleArn | Opcional | Corda |
|
awsAccessKeyId | Opcional | Corda |
|
awsSecretAccessKey | Opcional | Corda |
|
awsSessionToken | Opcional | Corda |
|
região | Obrigatório | Corda |
|
documentName | Obrigatório | Corda |
|
parâmetro | Opcional | Mapa |
|
idempotencyToken | Opcional | UUID |
Isso será passado como token de cliente para idempotência, a fim de iniciar a automação do AWS SSM. |
seletores | Opcional | Lista |
|
Campo de saída | Tipo | Exemplo |
|---|---|---|
automationExecutionId | Corda |
|
sucesso | Boleano |
|
mensagem de erro | Corda |
|
Importante
- Na entrada de ação, se
awsAccessKeyIdeawsSecretAccessKeyforem fornecidos, certifique-se de que sejam credenciais estáticas de um usuário IAM. - Se as credenciais da sessão forem usadas,
awsAccessKeyId,awsSecretAccessKeyeawsSessionTokendevem ser passados para a entrada de ação. - Consulte as credenciais da AWS para obter instruções.
- Utilize seletores para obter apenas o parâmetro especificado como saída.
Definição de fluxo de trabalho | Entradas | Saídas |
|---|---|---|
| | |
Aguarda uma automação usando um documento da AWS. Consulte a documentação do AWS Systems Manager para obter mais informações.
Campo de entrada | Opcionalidade | Tipo | Exemplo |
|---|---|---|---|
awsRoleArn | Opcional | Corda |
|
awsAccessKeyId | Opcional | Corda |
|
awsSecretAccessKey | Opcional | Corda |
|
awsSessionToken | Opcional | Corda |
|
região | Obrigatório | Corda |
|
automationExecutionId | Obrigatório | Corda |
A automação
para a qual precisamos aguardar sua conclusão. |
automationExecutionStatuses | Opcional | Lista |
Lista de status de execução de automação do AutomationExecution que podem interromper a espera. Padrão: |
Tempo esgotado | Opcional | int |
A duração em segundos que podemos esperar para que o status da automação seja um dos esperados Se ocorrer um tempo limite, a saída conterá |
seletores | Opcional | Lista |
. |
Campo de saída | Tipo | Exemplo |
|---|---|---|
automationExecutionId | Corda |
|
automationExecutionStatus | Corda |
Se a ação for bem-sucedida, ela retornará um dos valores passados no campo de entrada Caso contrário, será nulo. |
automationExecutionOutputs | Mapa | O resultado será um mapa dos valores de saída do documento. Qualquer resultado presente no documento pode ser coletado usando este campo de saída e utilizado nas etapas subsequentes da definição de automação do fluxo de trabalho. |
sucesso | Boleano |
|
mensagem de erro | Corda |
|
Importante
- No campo de entrada de ação, somente
awsAccessKeyIdeawsSecretAccessKeypodem ser fornecidos, mas devem ser credenciais estáticas de um usuário IAM. - Se as credenciais da sessão forem usadas,
awsAccessKeyId,awsSecretAccessKeyeawsSessionTokendevem ser passados para a entrada de ação. - Consulte as instruções para configurar as credenciais da AWS.
- Utilize seletores para obter apenas o parâmetro especificado como saída.
Definição de fluxo de trabalho | Entradas | Saídas |
|---|---|---|
| | |