Come faccio a fare riferimento ai parametri di Systems Manager in diversi servizi AWS?
Desidero utilizzare Parameter Store, una funzionalità di AWS Systems Manager, per integrare i parametri di Systems Manager in vari servizi AWS.
Breve descrizione
I seguenti scenari di esempio sono diversi modi per fare riferimento ai parametri di Systems Manager:
- Fai riferimento a un normale parametro di tipo stringa in un documento di comando di Systems Manager
- Fai riferimento a un parametro di tipo stringa sicuro in un documento di comando di Systems Manager
- Fai riferimento a un parametro di tipo stringa in un modello di AWS CloudFormation
- Fai riferimento a un parametro di tipo stringa in uno script Boto3
- Fai riferimento a un parametro di tipo stringa in un documento di automazione di Systems Manager
- Fai riferimento a un parametro di tipo stringa in un'Interfaccia della linea di comando AWS (AWS CLI)
Risoluzione
Fai riferimento a un normale parametro di tipo stringa in un documento di comando di Systems Manager
In questo scenario di esempio, stai installando una versione specifica dell'Interfaccia della linea di comando AWS (AWS CLI) su un'istanza Amazon Elastic Compute Cloud (Amazon EC2) Linux x86 (64 bit). Inoltre, il numero di versione di AWS CLI è memorizzato nel Parameter Store come /CLI/required-version.
L'esempio fa riferimento al parametro in un documento di comando come {{ssm:/CLI/required-version}}:
Nota: puoi fare riferimento a qualsiasi parametro di Systems Manager in un documento di comando nel seguente formato {{ssm:parameter-name}}.
{ "mainSteps": [ { "action": "aws:runShellScript", "name": "installSoftware", "inputs": { "runCommand": [ "echo 'Installing AWS CLI version {{ssm:/CLI/required-version}}'", "curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64-{{ssm:/CLI/required-version}}" -o "awscliv2.zip", "unzip awscliv2.zip", "sudo ./aws/install" ] } } ] }
Fai riferimento a un parametro di tipo stringa sicuro in un documento di comando di Systems Manager
Se utilizzi un tipo di parametro SecureString, devi prima decrittografare il parametro tramite un comando di AWS CLI. A questo punto puoi utilizzare il parametro nel documento di comando.
Nota: se non decritti prima il parametro, il valore scritto è il valore dei metadati.
Di seguito è riportato un esempio di riferimento a un parametro di tipo stringa sicuro in un documento di comando:
{ "mainSteps": [ { "action": "aws:runShellScript", "name": "installSoftware", "inputs": { "runCommand": [ "secure=$(aws ssm get-parameters --names /CLI/required-version --with-decryption --query Parameters[0].Value)", "curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64-$secure" -o "awscliv2.zip", "unzip awscliv2.zip", "sudo ./aws/install" ] } } ] }
Fai riferimento a un parametro di tipo stringa in un modello CloudFormation
Puoi utilizzare un modello CloudFormation per fare riferimento a un parametro di tipo stringa. La definizione del valore come String indica che il valore restituito per quel parametro è una stringa. Per altri tipi di parametri supportati, vedi Tipi di parametri SSM supportati.
Di seguito è riportato un esempio di avvio di un'istanza Amazon EC2, il cui nome è memorizzato in Parameter Store con il nome del parametro InstanceName:
{ "Parameters": { "MyInstanceName": { "Type": "AWS::SSM::Parameter::Value<String>", "Default": "InstanceName", "Description": "Name of the EC2 instance" } }, "Resources": { "TestInstance": { "Type": "AWS::EC2::Instance", "Properties": { "ImageId": "ami-xxxx", "InstanceType": "t3.xlarge", "Tags": [{ "Key": "Name", "Value": { "Ref": "MyInstanceName" } }] } } } }
CloudFormation non supporta la definizione dei parametri dei modelli come tipi di parametri SecureString di Systems Manager. Tuttavia, puoi utilizzare riferimenti dinamici per fare riferimento a un parametro di stringa sicuro in un modello CloudFormation solo per le risorse supportate.
Se stai utilizzando un riferimento dinamico per un parametro di stringa sicuro in un modello CloudFormation, consulta questo Esempio.
Fai riferimento a un parametro di tipo stringa in uno script Boto3
Con Boto3, puoi chiamare una funzione get_parameter con un parametro Name. Puoi anche includere il campo WithDecryption per fare riferimento a un parametro crittografato.
L'esempio seguente fa riferimento al valore di un parametro di stringa sicuro di Systems Manager chiamato /instance/name per avviare l'istanza. In questo esempio, il nome dell'istanza EC2 è memorizzato nel parametro di Systems Manager /instance/name:.
Nota: se utilizzi Boto3 con un parametro di tipo stringa, puoi rimuovere il campo WithDecryption.
import boto3 ec2_client = boto3.client('ec2') ssm_client = boto3.client('ssm') parameter_name = '/instance/name' response = ssm_client.get_parameter( Name=parameter_name, WithDecryption=True ) instance_name = response['Parameter']['Value'] response = ec2_client.describe_instances( Filters=[ { 'Name': 'tag:Name', 'Values': [instance_name] } ] ) instance_id = response['Reservations'][0]['Instances'][0]['InstanceId'] ec2_client.start_instances(InstanceIds=[instance_id]) print("Instance started successfully.")
Fai riferimento a un parametro di tipo stringa in un documento di automazione di Systems Manager
Con i documenti di automazione di Systems Manager, puoi utilizzare l'API aws:executeAwsApi per fare riferimento a un parametro di Systems Manager.
Nell'esempio seguente, l'Id dell'AMI viene memorizzato nel parametro Systems Manager e analizzato come input per questo documento di automazione. Il valore del parametro del passaggio 1 viene passato come input al passaggio 2 per l'avvio di un'istanza EC2.
Nota: se fai riferimento a un parametro SecureString, puoi impostare il valore per il campo WithDecryption su True. Tuttavia, l'output per la fase di automazione getparameter visualizza il valore decrittografato del parametro.
description: Sample runbook using AWS API operations schemaVersion: '0.3' assumeRole: '{{ AutomationAssumeRole }}' parameters: AutomationAssumeRole: type: String description: (Optional) The ARN of the role that allows Automation to perform the actions on your behalf. default: '' AMIParameter: type: String description: SSM Parameter name to get the AMI ID from mainSteps: - name: getparameter action: 'aws:executeAwsApi' inputs: Service: ssm Api: GetParameter Name: '{{AMIParameter}}' WithDecryption: false outputs: - Name: ImageId Selector: Parameter.Value Type: String - name: launchOneInstance action: 'aws:executeAwsApi' inputs: Service: ec2 Api: RunInstances ImageId: '{{ getparameter.ImageId }}' MaxCount: 1 MinCount: 1 outputs: - Name: InstanceId Selector: '$.Instances[0].InstanceId' Type: String
Fai riferimento a un parametro di tipo stringa nell'Interfaccia AWS CLI
Fare riferimento ai parametri di Systems Manager nell'interfaccia AWS CLI è simile al riferimento ai parametri nei documenti di comando. Puoi fare riferimento a un parametro di tipo stringa come ssm:parameter-name. Per i parametri di stringa sicuri, è necessario prima decrittografare il parametro. Quindi, puoi utilizzare il parametro nel comando AWS CLI.
Per un esempio di riferimento a un parametro nell'AWS CLI, vedi Eseguire un parametro (AWS CLI).
Contenuto pertinente
- AWS UFFICIALEAggiornata 2 mesi fa
- AWS UFFICIALEAggiornata un anno fa
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata un mese fa