入门 AWS CloudShell - AWS CloudShell

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

入门 AWS CloudShell

本入门教程向您展示如何使用 shell 命令行界面启动 AWS CloudShell 和执行关键任务。

首先,您登录 AWS Management Console 并选择一个 AWS 区域。然后,您可以在新的浏览器窗口 CloudShell 中启动,并选择要使用的外壳类型。

接下来,在主目录中创建一个新文件夹,然后从本地计算机上传一个文件到该文件夹。在从命令行将该文件作为程序运行之前,您可以使用预安装的编辑器处理文件。最后,您调用 AWS CLI 命令创建 Amazon S3 存储桶,并将您的文件作为对象添加到该存储桶。

先决条件

IAM 权限

您可以 AWS CloudShell 通过将以下 AWS 托管策略附加到您的 IAM 身份(例如用户、角色或群组)来获取权限:

  • AWSCloudShellFullAccess:为用户提供对 AWS CloudShell 及其功能的完全访问权限。

在本教程中,您还可以与之互动 AWS 服务。更具体地说,您可以通过创建 S3 存储桶并向该存储桶添加对象来与 Amazon S3 进行交互。您的 IAM 身份需要一个至少授予 s3:CreateBuckets3:PutObject 权限的策略。

有关更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的 Amazon S3 操作

练习文件

此练习还包括上传和编辑一个文件,然后在命令行界面中将该文件作为程序运行。在本地计算机上打开文本编辑器并添加以下代码段。

import sys x=int(sys.argv[1]) y=int(sys.argv[2]) sum=x+y print("The sum is",sum)

使用文件名 add_prog.py 保存该文件。

内容

第 1 步:登录 AWS Management Console

此步骤包括输入您的 IAM 用户信息以访问 AWS Management Console。如果您已经在控制台中,请跳至步骤 2

  • 您可以使用 IAM 用户的登录 URL 或前往主登录页面来访问。 AWS Management Console

    IAM user sign-in URL
    • 打开浏览器并输入以下登录 URL。将 account_alias_or_id 替换为管理员提供的账户别名或账户 ID。

      https://account_alias_or_id.signin.aws.amazon.com/console/
    • 输入您的 IAM 登录凭证,然后选择 登录

    作为 IAM 用户登录
    Main sign-in page
    • 打开 https://aws.amazon.com/console

    • 如果您之前没有使用此浏览器登录过,则会显示主登录页面。选择 IAM 用户,输入账户别名或账户 ID,然后选择下一步

      作为 IAM 用户登录
    • 如果您之前已经以 IAM 用户身份登录过,浏览器可能会记住 AWS 账户的账户别名或账户 ID。如果是这一情况,输入您的 IAM 登录凭证,然后选择 登录

      作为 IAM 用户登录
    注意

    您也可以以根用户身份登录。此身份可以完全访问账户中的所有资源 AWS 服务 和资源。但是,我们强烈建议您不要使用根用户来执行日常任务,即使是管理任务。相反,请遵循仅使用根用户创建您的第一个 IAM 用户的最佳实践。

第 2 步:选择区域 AWS CloudShell,启动并选择外壳

在此步骤中,您将 AWS CloudShell 从控制台界面启动,选择可用的 shell AWS 区域,然后切换到您的首选 shellBash,例如 PowerShell、或Z shell。

  1. 要选择 AWS 区域 要工作的区域,请前往 “选择区域” 菜单,然后选择要使用的支持 AWS 区域。(可用区域突出显示。)

    重要

    如果您切换区域,则界面会刷新,所选 AWS 区域 的名称将显示在命令行文本的上方。您添加到持久性存储空间的所有文件都仅在同一 AWS 区域可用。如果您更改区域,则可以访问不同的存储空间和文件。

    重要

    如果您 CloudShell 在主机左下角启动时 CloudShell 在所选区域中不可用,则默认区域将设置为最接近所选区域的区域。Console Toolbar您可以运行该命令,该命令提供在与默认区域不同的区域中管理资源的权限。有关更多信息,请参阅在中工作 AWS 区域

    示例

    如果您选择欧洲(西班牙),eu-south-2但在欧洲(西班牙) CloudShell 不可用eu-south-2,则默认区域将设置为欧洲(爱尔兰)eu-west-1,它离欧洲(西班牙)最近eu-south-2。

    您将使用默认区域欧洲(爱尔兰)的服务配额,eu-west-1并且将在所有地区恢复相同的会 CloudShell 话。默认区域可能会更改, CloudShell 浏览器窗口中将通知您。

  2. 从中 AWS Management Console,您可以 CloudShell 通过选择以下选项之一来启动:

    1. 在导航栏上,选择图CloudShell标。

    2. 在 “搜索” 框中,键入 “CloudShell”,然后选择CloudShell

    3. 在 “最近访问过” 控件中,选择CloudShell

    4. 选择CloudShell控制Console Toolbar台左下角的。

      • 要调整会 CloudShell 话的高度,请拖动=

      • 要将您的 CloudShell 会话切换到全屏模式,请单击 “在新浏览器选项卡中打开” 图标。

    AWS CloudShell 界面中的主要功能。

    当系统显示命令提示符时,表示 shell 已经准备就绪,可以进行交互。

    注意

    如果您遇到阻碍您成功启动或与之交互的问题 AWS CloudShell,请在中查看信息以识别和解决这些问题故障排除 AWS CloudShell

  3. 要选择要使用的预安装 Shell,请在命令行提示栏中输入以下程序名称之一:

    Bash

    bash

    如果切换到 Bash,则命令提示符处的符号将更新为 $

    注意

    Bash是你启动时正在运行的默认 shell AWS CloudShell。

    PowerShell

    pwsh

    如果切换到 PowerShell,则命令提示符处的符号将更新为PS>

    Z shell

    zsh

    如果切换到 Z shell,则命令提示符处的符号将更新为 %

    有关您的 shell 环境中预安装的版本的信息,请参阅 AWS CloudShell 计算环境部分的 sh ells 表

第 3 步:从中下载文件 AWS CloudShell

注意

此选项不适用于 VPC 环境。

此步骤指导您完成下载文件的过程。

  1. 要下载文件,请转到操作,然后从菜单中选择下载文件

    将显示下载文件对话框。

  2. 下载文件对话框中,输入要下载的文件的路径。

    指定文件下载路径。
    注意

    指定要下载的文件时,可以使用绝对路径或相对路径。对于相对路径名,默认情况下 /home/cloudshell-user/ 会自动添加到开头。因此,要下载名为 mydownload-file 的文件,以下两个路径都是有效的路径:

    • 绝对路径:/home/cloudshell-user/subfolder/mydownloadfile.txt

    • 相对路径:subfolder/mydownloadfile.txt

  3. 选择下载

    如果文件路径正确,则会显示一个对话框。您可以使用此对话框通过默认应用程序打开文件。或者,您可以将文件保存到本地计算机上的某个文件夹。

注意

当您在 CloudShell 上启动时,“下载” 选项不可用Console Toolbar。您可以从 CloudShell 控制台或使用 Chrome 网络浏览器下载文件。有关如何下载文件的更多信息,请参阅步骤 3:从下载文件 AWS CloudShell。

第 4 步:将文件上传到 AWS CloudShell

注意

此选项不适用于 VPC 环境。

此步骤介绍如何上传文件,然后将其移至主目录中的新目录。

  1. 要检查当前的工作目录,请在提示符下输入以下命令:

    pwd

    当您按 Enter 键时,Shell 会返回您当前的工作目录(例如,/home/cloudshell-user)。

  2. 要将文件上传到该目录,请转至操作并从菜单中选择上传文件

    将显示上传文件对话框。

  3. 选择 Browse

  4. 在系统的文件上传对话框中,选择您为本教程(add_prog.py)创建的文本文件,然后选择打开

  5. 上传 对话框里,选择添加文件

    进度条会跟踪上传情况。如果上传成功,则会显示一条消息,确认 add_prog.py 已添加到主目录的根目录中。

  6. 要为文件创建目录,请输入 make directories 命令:mkdir mysub_dir

  7. 要将上传的文件从主目录的根目录移动到新目录,请使用 mv 命令:

    mv add_prog.py mysub_dir.

  8. 要将工作目录更改为新目录,请输入 cd mysub_dir

    命令提示符会更新以表明您已更改工作目录。

  9. 要查看当前目录 mysub_dir 的内容,请输入 ls 命令。

    列出工作目录的内容。这包括您刚刚上传的文件。

第 5 步:从中移除文件 AWS CloudShell

此步骤介绍如何从中删除文件 AWS CloudShell。

  1. 要从中删除文件 AWS CloudShell,请使用标准 shell 命令,例如rm(删除)。

    rm my-file-for-removal

  2. 要移除多个符合指定条件的文件,请运行 find 命令。

    以下示例删除了名称中包含后缀“.pdf”的所有文件。

    find -type f -name '*.pdf' -delete
注意

假设您停止 AWS CloudShell 在特定环境中使用 AWS 区域。然后,该区域的持续性存储中的数据将在指定时间段后自动删除。更多信息,请参阅持久性存储

步骤 6:创建主目录备份

  1. 创建备份文件

    在主目录之外创建一个临时文件夹。

    HOME_BACKUP_DIR=$(mktemp --directory)

    您可以使用以下方法之一创建备份:

    1. 使用 tar 创建备份文件

      要使用 tar 创建备份文件,请输入以下命令:

      tar \ --create \ --gzip \ --verbose \ --file=${HOME_BACKUP_DIR}/home.tar.gz \ [--exclude ${HOME}/.cache] \ // Optional ${HOME}/ echo "Home directory backed up to this file: ${HOME_BACKUP_DIR}/home.tar.gz"
    2. 使用 zip 创建备份文件

      要使用 zip 创建备份文件,请输入以下命令:

      zip \ --recurse-paths \ ${HOME_BACKUP_DIR}/home.zip \ ${HOME} \ [--exclude ${HOME}/.cache/\*] // Optional echo "Home directory backed up to this file: ${HOME_BACKUP_DIR}/home.zip"
  2. 将备份文件传输到外面 CloudShell

    您可以使用以下选项之一将备份文件传输到外部 CloudShell:

    1. 将备份文件下载到本地计算机上

      您可以下载在先前步骤中创建的文件。有关如何从中下载文件的更多信息 CloudShell,请参阅从下载文件 AWS CloudShell

      在“下载文件”对话框中,输入要下载的文件的路径(例如,/tmp/tmp.iA99tD9L98/home.tar.gz)。

    2. 将备份文件传输到 S3

      要生成存储桶,请输入以下命令:

      aws s3 mb s3://${BUCKET_NAME}

      使用 AWS CLI 将文件复制到 S3 存储桶:

      aws s3 cp ${HOME_BACKUP_DIR}/home.tar.gz s3://${BUCKET_NAME}
      注意

      可能会收取数据传输费用。

  3. 直接备份到 S3 存储桶

    要直接备份到 S3 存储桶,请输入以下命令:

    aws s3 cp \ ${HOME}/ \ s3://${BUCKET_NAME} \ --recursive \ [--exclude .cache/\*] // Optional

步骤 7:重新启动 Shell 会话

注意

作为一项安全措施,如果您长时间不使用键盘或指针与 Shell 进行交互,则会话会自动停止。长时间运行的会话也会自动停止。有关更多信息,请参阅 Shell 会话

  1. 要重新启动 Shell 会话,请选择操作重新启动 AWS CloudShell

    系统会通知您,重新启动会 AWS CloudShell 停止当前 AWS 区域的所有活动会话。

  2. 要确认,请选择重新启动

    接口显示一条消息,表示 CloudShell 计算环境正在停止。环境停止并重新启动后,您可以开始在新会话中使用命令行。

    注意

    在某些情况下,环境重新启动可能需要几分钟时间。

步骤 8:删除 Shell 会话主目录

注意

此选项不适用于 VPC 环境。重启 VPC 环境时,其主目录将被删除。

警告

删除主目录是一项不可逆的操作,即存储在主目录中的所有数据将被永久删除。但是,在以下情况下,您可以考虑使用此选项:

  • 您错误地修改了文件并且无法访问 AWS CloudShell 计算环境。删除您的主目录会 AWS CloudShell 恢复其默认设置。

  • 您想 AWS CloudShell 立即从中删除所有数据。如果您停止 AWS CloudShell 在某个 AWS 区域中使用,则永久存储将在保留期结束时自动删除,除非您在该地区 AWS CloudShell 重新启动。

如果您需要长期存储文件,请考虑使用诸如 Amazon S3 或之类的服务 CodeCommit。

  1. 要删除 shell 会话,请选择操作删除 AWS CloudShell 主目录

    系统会通知您,删除 AWS CloudShell 主目录会删除当前存储在您的 AWS CloudShell 环境中的所有数据。

    注意

    您不能撤消此操作。

  2. 要确认删除操作,请在文本输入字段中输入位置名称,然后选择 删除

    激活“删除主目录”按钮。

    AWS 会 CloudShell 停止当前的所有活动会话 AWS 区域 并立即创建新环境。

    手动退出 Shell 会话

    使用命令行,您可以退出 Shell 会话并使用 exit 命令进行注销。然后,您可以按任意键重新连接并继续使用 AWS CloudShell。

步骤 9:编辑文件代码并使用命令行运行

此步骤演示如何使用预安装的 Vim 编辑器来处理文件。然后,您可以从命令行将该文件作为程序运行。

  1. 要编辑您在上一步骤中上传的文件,请输入以下命令:

    vim add_prog.py

    Shell 界面将刷新以显示 Vim 编辑器。

  2. 要在 Vim 中编辑文件,请按 I 键。现在编辑内容,让程序将三个数字而不是两个数字相加。

    import sys x=int(sys.argv[1]) y=int(sys.argv[2]) z=int(sys.argv[3]) sum=x+y+z print("The sum is",sum)
    注意

    如果您将文本粘贴到编辑器中并启用了安全粘贴功能,则会显示一条警告。复制的多行文本可能包含恶意脚本。使用“安全粘贴”功能,您可以在粘贴之前验证完整的文本。如果您对文本安全感到满意,请选粘贴

  3. 编辑程序后,按下 Esc 进入 Vim 命令模式。然后,输入 :wq 命令保存文件,并退出编辑器。

    注意

    如果您不熟悉 Vim 命令模式,一开始可能会发现很难在命令模式和插入模式之间切换。保存文件和退出应用程序时使用命令模式。插入新文本时使用插入模式。要进入插入模式,请按 I;要进入命令模式,请按 Esc。有关Vim中提供的其他工具的更多信息 AWS CloudShell,请参阅开发工具和 Shell 实用程序

  4. 在主命令行界面上,运行以下程序并指定要输入的三个数字。语法如下所示。

    python3 add_prog.py 4 5 6

    命令行显示程序输出:The sum is 15

步骤 10:使用将文件作为对象添加 AWS CLI 到 Amazon S3 存储桶中

在此步骤中,您将创建一个 Amazon S3 存储桶,然后使用PutObject方法将您的代码文件作为对象添加到该存储桶中。

注意

在大多数情况下,您可以使用诸如之类的服务将软件文件提交 CodeCommit到版本控制的存储库中。本教程介绍如何使用 AWS CLI 在 AWS CloudShell 与其他 AWS 服务进行交互。使用此方法时,无需下载或安装任何其他资源。此外,由于已经在 Shell 中进行了身份验证,因此在进行调用之前无需配置凭证。

  1. 要在指定的存储桶中创建存储桶 AWS 区域,请输入以下命令:

    aws s3api create-bucket --bucket insert-unique-bucket-name-here --region us-east-1
    注意

    如果您要在 us-east-1 区域之外创建存储桶,请使用 LocationConstraint 参数添加 create-bucket-configuration 以指定区域。以下是示例语法。

    $ aws s3api create-bucket --bucket my-bucket --region eu-west-1 --create-bucket-configuration LocationConstraint=eu-west-1

    如果调用成功,命令行将显示来自服务的响应,输出与以下类似。

    { "Location": "/insert-unique-bucket-name-here" }
    注意

    如果您不遵守命名存储桶的规则,则会显示以下错误:调用 CreateBucket操作时出现错误 (InvalidBucketName):指定的存储桶无效

  2. 要上传文件并将该文件作为对象添加到您刚创建的存储桶,请调用 PutObject 方法。

    aws s3api put-object --bucket insert-unique-bucket-name-here --key add_prog --body add_prog.py

    将对象上传到 Amazon S3 存储桶后,命令行将显示来自服务的响应,类似于以下输出:

    {"ETag": "\"ab123c1:w:wad4a567d8bfd9a1234ebeea56\""}

    ETag 是存储的对象的哈希值。您可以使用此哈希值来 检查上传到 Amazon S3 的对象的完整性