Blog

AWS CLI-Aliase: Kürzen Sie Ihre meistgenutzten Befehle

Martijn van Dongen

Aktualisiert Oktober 21, 2025
5 Minuten

Eines der bestgehüteten Geheimnisse der AWS CLI dürfte die Funktion "Alias" sein. Es handelt sich um eine native Funktion von AWS. In diesem Blog-Beitrag beschreibe ich, wie Sie loslegen können, und zeige Ihnen ein paar meiner bisher am häufigsten verwendeten Aliase.

cat > ~/.aws/cli/alias <<! 
[toplevel]

whoami = sts get-caller-identity
cf = cloudformation
cfls =
  !f() {
    aws cloudformation list-stacks
  }; f

!

Probieren Sie nun Ihre neuen Aliasnamen aus. Der erste ist der Alias für aws sts get-caller-identity.

$ aws whoami
{
    "UserId": "A3H342JJLKJ24H23KL42:session",
    "Account": "112233445566",
    "Arn": "arn:aws:sts::985363061363:assumed-role/admin/session"
}

Als nächstes folgen die beiden Aliase für aws cloudformation list-stacks. Beide Beispiele sparen nur ein paar Tastenanschläge, aber es ist ein guter Anfang.

$ aws cf list-stacks
{
    "StackSummaries": [
        {
            "StackId": "arn:aws:cloudformation:eu-west-1:112233445566:stack/stack/129...",
            "StackName": "stack",
            "CreationTime": "2019-06-26T14:38:32.984Z",
...

$ aws cfls
{
    "StackSummaries": [
        {
            "StackId": "arn:aws:cloudformation:eu-west-1:112233445566:stack/stack/129...",
            "StackName": "stack",
            "CreationTime": "2019-06-26T14:38:32.984Z",
...

Jetzt haben Sie ein grundlegendes Verständnis für die Verwendung von Aliasen für einzelne Wörter und kurze Befehle, aber es gibt noch viel mehr zu lernen.
Die meisten CLI-Befehle, die ich verwende, sind mit CloudFormation. S3 CLI-Befehle wie aws s3 ls <bucket> sind ein Alias für aws s3api list-objects --bucket <bucket>. Diese Befehle sind standardmäßig in der AWS CLI verfügbar. Ich habe einige Aliase für CloudFormation auf ähnliche Weise erstellt. Die erste Reihe von Beispielen sind lediglich Informationsabfragen, die Sie häufig ausführen werden, um aktuelle Informationen oder den Status Ihrer Stacks zu erhalten.
* List. sollte nur die aktiven AWS Stacks auflisten. Ohne Parameter werden alle Stacks für die Region, in der Sie sich befinden, angezeigt, aber Sie können auch den ersten Buchstaben des Stacks eingeben.
* Describe. zeigt einige Details des Stacks in JSON an, da Sie alles sehen möchten.
* Resources. zeigt eine Tabelle der Ressourcen in einer Tabellenansicht an.
* Outputs. zeigt die Ausgaben in einer Tabellenansicht an.
* Events and Errors. Zeigt die letzten Ereignisse oder Fehler eines Stacks an.
Fügen Sie den folgenden Code zu Ihrem ~/.aws/cli/alias hinzu.

list = 
  !f() {
    aws cloudformation list-stacks 
      --query "StackSummaries[?StackStatus != 'DELETE_COMPLETE' && starts_with(StackName, '${1}')].{StackName: StackName, StackStatus: StackStatus, UpdateTime: LastUpdatedTime}" 
      --output table
  }; f

describe = 
  !f() {
    if [ -z "$1" ]; then
      echo "usage: aws describe <stack_name>"
    else
      aws cloudformation describe-stacks --stack-name $1
    fi
  }; f

outputs = 
  !f() {
    if [ -z "$1" ]; then
      echo "usage: aws outputs <stack_name>"
    else
      aws cloudformation describe-stacks 
        --stack-name $1 
        --query "Stacks[].Outputs[].{OutputKey: OutputKey, OutputValue: OutputValue}" 
        --output table
    fi
  }; f

resources = 
  !f() {
    if [ -z "$1" ]; then
      echo "usage: aws resources <stack_name>"
    else
      aws cloudformation describe-stack-resources 
        --stack-name $1 
        --query "StackResources[].{ResourceStatus: ResourceStatus, LogicalResourceId: LogicalResourceId, PhysicalResourceId: PhysicalResourceId}" 
        --output table
    fi
  }; f

events =
  !f() {
    if [ -z "$1" ]; then
      echo "usage: aws events <stack_name>"
    else
      aws cloudformation describe-stack-events 
        --stack-name $1 
        --query "StackEvents[].[Timestamp,ResourceStatus,LogicalResourceId,ResourceStatusReason]" 
        --output table
    fi
  }; f

errors = 
  !f() {
    if [ -z "$1" ]; then
      echo "usage: aws errors <stack_name>"
    else
      aws cloudformation describe-stack-events 
        --stack-name $1 
        --query "StackEvents[?ResourceStatus=='CREATE_FAILED' || ResourceStatus=='UPDATE_FAILED'].[Timestamp,ResourceStatus,LogicalResourceId,ResourceStatusReason]" 
        --output table
    fi
  }; f

Außerdem gibt es einige Befehle zum schnellen Erstellen, Aktualisieren und Löschen von Stacks.
* Deploy. Setzt einen Stack ein und sucht standardmäßig nach der template.yml, da ich diese oft verwende. Außerdem ist der Parameter -capabilities bereits eingestellt.
* Paketieren. Dieser Befehl kann eine SAM-Vorlage verpacken und erzeugt eine neue Vorlagendatei für die Bereitstellung: packaged.yml (die natürlich überschrieben werden kann). Ziehen Sie die Verwendung des Befehls Launch in Betracht, da dieser ein Paket und eine Bereitstellung in einem Schritt durchführt.
* Launch. Erstellt ein Paket, indem es in ein S3bucket hochgeladen wird. Auch hier wird standardmäßig template.yml verwendet.
* Löschen. Löscht einen Stack.
Fügen Sie nun den folgenden Codeschnipsel zu Ihrem ~/.aws/cli/alias hinzu.

package = 
  !f() {
    if [ -z "$2" ]; then
      template="template.yml"
    else
      template=$2
    fi
    if [ -z "$3" ]; then
      packaged="packaged.yml"
    else
      packaged=$3
    fi

    if [ -z "$1" ]; then
      echo "usage: aws package <s3bucket> [<source_template>] [<target_template>]"
    else
      aws cloudformation package 
        --template $template 
        --s3-bucket $1 
        --output-template-file $packaged
    fi
  }; f

deploy =
  !f() {
    if [ -z "$2" ]; then
      template="template.yml"
    else
      template=$2
    fi

    if [ -z "$1" ]; then
      echo "usage: aws package <stack_name> [<template>]"
    else
      aws cloudformation deploy 
        --capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM 
        --stack-name $1 
        --template $template
    fi
  }; f

delete = 
  !f() {
    if [ -z "$1" ]; then
      echo "usage: aws delete <stack_name>"
    else
      aws cloudformation delete-stack 
        --stack-name $1
    fi
  }; f

launch = 
  !f() {
    if [ -z "$3" ]; then
      template="template.yml"
    else
      template=$3
    fi

    if [ "$template" == "packaged.yml" ]; then
      echo "template should not be packaged.yml"
      exit 1
    fi

    if [ -z "$1" ]; then
      echo "usage: aws delete <s3bucket> <stack_name> [<template>]"
    else
      aws cloudformation package 
        --template $template 
        --s3-bucket $1 
        --output-template-file packaged.yml

      aws cloudformation deploy 
        --stack-name $2 
        --capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM 
        --template packaged.yml
    fi
  }; f

Fazit

Zum Abschluss dieses Blogbeitrags möchte ich Ihnen die Einrichtung des folgenden Stacks zeigen. Sie wird zunächst fehlschlagen, weil der BucketName bereits existiert. Dann lösche ich den Stack und entferne den BucketName, so dass CloudFormation einen neuen erstellt, den ich mit Ausgaben finden werde. In diesem Beispiel verwende ich eine Reihe von Alias-Befehlen, wie z.B.: deploy, errors, delete, outputs, resources. Ich denke, das wird Hunderte von Tastenanschlägen sparen.

Resources:
  S3Bucket:
    Type: AWS::S3::Bucket
    Properties:
      BucketName: "aws"
Outputs:
  S3Bucket:
    Value: !Ref S3Bucket

$ aws deploy test                 
Waiting for changeset to be created..
Waiting for stack create/update to complete
Failed to create/update the stack.

$ aws errors test
---------------------------------------------------------------------------------
|                              DescribeStackEvents                              |
+---------------------------+----------------+-----------+----------------------+
|  2019-07-01T13:22:01.076Z |  CREATE_FAILED |  S3Bucket |  aws already exists  |
+---------------------------+----------------+-----------+----------------------+

$ aws delete test

$ aws deploy test
Waiting for changeset to be created..
Waiting for stack create/update to complete
Successfully created/updated stack - test

$ aws resources test
-------------------------------------------------------------------------
|                        DescribeStackResources                         |
+-------------------+-------------------------------+-------------------+
| LogicalResourceId |      PhysicalResourceId       |  ResourceStatus   |
+-------------------+-------------------------------+-------------------+
|  S3Bucket         |  test-s3bucket-1jsdfaabenntt  |  CREATE_COMPLETE  |
+-------------------+-------------------------------+-------------------+

$ aws outputs test
----------------------------------------------
|               DescribeStacks               |
+------------+-------------------------------+
|  OutputKey |          OutputValue          |
+------------+-------------------------------+
|  S3Bucket  |  test-s3bucket-1jsdfaabenntt  |
+------------+-------------------------------+

Ich hoffe, Sie nutzen diese Alias-Funktion und teilen Ihre Beispiele mit uns!

Verfasst von

Martijn van Dongen

Contact

Let’s discuss how we can support your journey.