genvid.toolbox.AWSTool

class genvid.toolbox.AWSTool(*, default_region=None, **kwargs)

ベースクラス: genvid.toolbox.basetool.BaseTool

AWS リソースにアクセスして操作するためのユーティリティ。

パラメータ:default_region (str) – デフォルト AWS 領域を上書き。

バージョン 1.20.0 で変更: ドキュメントの更新。*セッションとインスタンスが必要に応じて遅延インスタンス化。適用可能なすべてのメソッドに、オプションでキーワードのみのパラメータ `region=None` が追加され、どのリージョンで処理を行うかを指定できるようになりました。 クラスのデフォルトリージョンは、AWS の設定によって定義されたデフォルトリージョンからオーバーライドすることができます。

バージョン 1.33.0 で変更: AWSの依存関係をオプションにする。

NAME = 'aws'
DESCRIPTION = 'Utilities to access and manipulate AWS resources.'
AWS_GLOBAL_REGION = 'global'

AWS グローバル領域の参照に使用するキー。

AMI_NAME_TMPL = '{prefix}-{type}-{version}-{timestamp}'

AMI 名のテンプレート。

AMI_NAME_RE = re.compile('(?P<prefix>.*)-(?P<type>[^-]*)-(?P<version>[^-]*)-(?P<timestamp>\\d{8}-\\d{6})')

AMI と一致する正規表現。

EXITCODE_MESSAGE_RE = re.compile('ExitCode of User Data with PID: (?P<PID>\\d+) is (?P<ExitCode>\\d+)')

ユーザーデータスクリプトの終了コードと一致する正規表現。

aws_default_region
戻り値:デフォルトの領域名。
aws_session
戻り値:デフォルト AWS セッション

注釈

このメソッドで返されるオブジェクトについては、boto3 Session API documentation を参照してください。

aws_ec2
戻り値:デフォルト領域の AWS EC2 リソースサービスクライアント。

注釈

このメソッドで返されるオブジェクトについては、boto3 EC2 API documentation を参照してください。

aws_s3
戻り値:デフォルト領域の AWS S3 リソースサービスクライアント。

注釈

このメソッドで返されるオブジェクトについては、boto3 S3 API documentation を参照してください。

aws_sts
戻り値:デフォルト領域の AWS STS クライアント。

警告

リクエストは、全体ではなく、デフォルト領域に送信されます。リクエストを sts.amazonaws.com に送信するには、 aws_sts_global() を使用してください。

注釈

このメソッドで返されるオブジェクトについては、boto3 STS API documentation を参照してください。

aws_sts_global
戻り値:AWS STS グローバルクライアント。

注釈

このメソッドで返されるオブジェクトについては、boto3 STS API documentation を参照してください。

aws_session_in(region=None)
戻り値:AWS セッション。
パラメータ:region (str) – セッションが動作する領域。

注釈

このメソッドで返されるオブジェクトについては、boto3 Session API documentation を参照してください。

aws_ec2_in(region=None)
戻り値:AWS EC2 リソースサービスクライアント。
パラメータ:region (str) – クライアントが動作する領域。

注釈

このメソッドで返されるオブジェクトについては、boto3 EC2 API documentation を参照してください。

aws_s3_in(region=None)
戻り値:AWS S3 リソースサービスクライアント。
パラメータ:region (str) – クライアントが動作する領域。

注釈

このメソッドで返されるオブジェクトについては、boto3 S3 API documentation を参照してください。

aws_sts_in(region=None)
戻り値:AWS STS クライアント。
パラメータ:region (str) – クライアントが動作する領域。

警告

regionNone の場合、リクエストは、全体ではなく、デフォルト領域に送信されます。リクエストを sts.amazonaws.com に送信するには、 aws_sts_global() を使用してください。

注釈

このメソッドで返されるオブジェクトについては、boto3 STS API documentation を参照してください。

aws_tag_ami_snapshot(ami, ec2=None, *, region=None)

AMI タグを EBS スナップショットにコピーします。

コピーするタグ:

  • Name
  • Version
  • InstanceType
パラメータ:
  • ami – タグをスナップショットにコピーする EC2 イメージ。 .. 注意:: AMI (EC2 イメージ) の API APIは、boto3 EC2.Image API documentation からアクセスできます。
  • ec2 – 使用する EC2 リソースサービスクライアント。 .. :: 1.20.0 で廃止。 このパラメータは、region パラメータを設定して、AWSTool に正しいクライアントを提供させるだけで、代用可能。
  • region (str) – スナップショットを入れておく領域。 .. 注意:: region パラメータは、ec2None の場合にのみ使用可能。
static aws_publish_image(ami)

AMI を公開します。

パラメータ:ami – 動作する EC2 イメージ。 .. 注意:: AMI (EC2 イメージ) の API は、boto3 EC2.Image API documentation からアクセスできます。
aws_list_amis(ami_type: str, owner: str = '', prefix: str = '', version: str = '', *, region=None)

利用可能な AMI のリスト。

パラメータ:
  • ami_type (str) – AMI のタイプ。以下のいずれか: * wingame * server
  • owner (str) – 指定すると、owner でフィルタリングします。 .. 注意:: genvidtech の値は Genvid Technologies Account の特殊なエイリアスです。
  • prefix (str) – フィルタの接頭辞。 『*』 を指定可能。 .. 重要:: 指定しない場合: wingame AMI では * default、それ以外は * genvidtech となります。
  • version (str) – フィルタリングするバージョン。デフォルトは GENVID_TOOLBOX_VERSION
  • region (str) – 検索する領域を指定します。
戻り値:

EC2 イメージのリスト。

aws_copy_ami(ami_id, regions, public=False, force=False, *, region=None)

AMI を複数の領域にコピーします。

パラメータ:
  • ami_id – ソースを検索する AMI 識別子
  • regions – 対象領域への iterable。
  • public (bool) – すべての AMI を公開するかどうか。 .. 警告:: ソース AMI が公開されます。
  • force (bool) – 指定先が存在する場合は上書きされます。
  • region (str) – ソース AMI 領域の指定に使用します。
戻り値:

コピーを含むリスト。

aws_rename_ami(ami_id, prefix, public=False, force=False, *, region=None)

AMI をコピーし、初期接頭辞を変更します。

パラメータ:
  • ami_id – ソースを検索する AMI 識別子
  • prefix – コピー後に新しく付けるプレフィックス。.. 警告:: 新しい接頭辞は、 AMI_NAME_TMPL のフォーマットに使用されます。新しい名前は、 AMI_NAME_RE で定義する正規表現と一致している必要があります。
  • public (bool) – コピー後の AMI を公開するかどうか。
  • force (bool) – 指定先が存在する場合は上書きされます。
  • region (str) – ソース AMI 領域の指定に使用します。
戻り値:

コピー後の AMI。

aws_ami_snapshots(ami)

EC2 イメージに関連付けられた EBS スナップショットのリストを生成します。

パラメータ:ami – 動作する EC2 イメージ。 .. 注意:: AMI (EC2 イメージ) の API は、boto3 EC2.Image API documentation からアクセスできます。

バージョン 1.13.0 で追加.

aws_modify_ami_permissions(ami_id: str, user_ids: typing.Union[typing.List[str], NoneType] = None, *, public: bool = False, region: typing.Union[str, NoneType] = None, remove: bool = False, reset: bool = False)

AMI のアクセス許可を設定します。

パラメータ:
  • ami_id – AMI の ID。
  • user_ids – アクセスを設定するためのアカウント ID のオプションリスト。
  • publicGroup: all の許可を追加します。
  • region – AMI のリージョン。 デフォルトは現在のリージョン。
  • remove – 許可を追加する代わりに削除します。
  • reset – 追加する前に許可をリセット。削除が True の場合は無効。

バージョン 1.30.0 で追加.

aws_describe_ami_permissions(ami_id: str, *, region: typing.Union[str, NoneType] = None) → typing.Tuple[bool, typing.List[str]]

AMI のアクセス許可を設定します。

パラメータ:
  • ami_id – AMI の ID。
  • region – AMI のリージョン。 デフォルトは現在のリージョン。
戻り値:

最初のメンバーとして、また AMI が 2 番目のメンバーとしてパブリックである場合の、ユーザー ID のリスト (空の場合があります) があるタプル。

バージョン 1.30.0 で追加.

aws_delete_ami(ami, dryrun: bool = False, *, region=None)

イメージと関連するスナップショットを登録解除します。

注釈

このメソッドはすべての処理を記録します。

パラメータ:
  • ami – 動作する EC2 イメージ。 .. 注意:: AMI (EC2 イメージ) の API は、boto3 EC2.Image API documentation からアクセスできます。
  • dryrun (bool) – 表示のみ。実際には削除されません。
  • region (str) – ソース AMI 領域の指定に使用します。

バージョン 1.13.0 で追加.

aws_format_bucket_key(key: str) → str

バケットキーが間違っていないことを確認してください。

キーが空白の場合には、」/」 で始めるものを削除し、」/」 で終わるものを追加します。

パラメータ:key (str) – フォーマットするキー。
戻り値:フォーマットされる可能性のあるキー。

バージョン 1.20.0 で追加.

aws_upload_file(bucket, key: str, filepath: str, *, region=None)

特定の S3 バケットにファイルをアップロードします。

パラメータ:
  • bucket – ファイルをアップロードする S3 バケット。 .. 注意:: S3 バケットの API は、boto3 S3.Bucket API documentation からアクセス可能。 .. 注意:: バケットの識別子 str を提供可能。その場合、そのバケットの検索は自動で処理されます。
  • key (str) – バケットの新しいファイルに追加するキー。
  • filepath (str) – アップロードするファイルのパス。
  • region (str) – バケット ID を使用した場合の検索領域。
update_s3_images(prefixes: typing.List[str], bucket_id: str, key_prefix: str, images_folder: typing.Union[pathlib.Path, str, NoneType] = None, *, region=None)

S3 バケットに画像をアップロードします。

警告

アップデートが必要かどうかを、ファイルサイズで決定します。新しいファイルが既存のファイルと同一サイズであった場合、アップデートは失敗します。

パラメータ:
  • bucket – 処理を行う S3 バケット識別子。
  • key_prefix – ファイルをアップロードするプレフィックスキー。
  • prefixes – このプレフィックスのファイルのみをアップデートします。 .. 警告:: プレフィックスが一致するバケット内のすべてのファイルは、 新しいバージョンで置き換えられない場合でも、すべて削除されます。
  • images_folder – ソースイメージが含まれるディレクトリ。
  • region (str) – バケットが存在する領域。

バージョン 1.20.0 で変更: images_folder パラメータを追加。

bucket_exist(boto_client, bucket_id: str) → bool

バケットが存在するかを確認します。

全バケットの一覧を取得し、bucket_id パラメータで指定した名前のバケットが存在するかどうかを確認します。

パラメータ:
  • boto_client – boto3 クライアントインスタンスを指定する必要があります。
  • bucket_id – 存在を確認する必要のあるバケット名。
戻り値:

バケットが存在する場合は True を返します。

get_bucket_region(bucket_id, boto_client=None) → str

S3 バケットのリージョンを取得

パラメータ:
  • bucket_id – バケット名
  • boto_client – オプション。指定しない場合は作成されます。
戻り値:

S3 バケットのリージョンを返します。

get_s3_images_bucket_config(bucket: str, key_prefix='/', *, region=None) → dict

S3 バケットからイメージ設定を取得します。

重要

イメージ名は、選択される DockerTool.RE_IMAGE_IMAGEID と一致する必要があります。

パラメータ:
  • bucket – 処理を行うバケット識別子。
  • key_prefix – 比較するバケットキーのプレフィックス。
  • region (str) – バケットが含まれる領域。
戻り値:

取得したイメージ設定のリスト。

resolve_s3_domain(bucket_name, region) → str
aws_wait_for_windows_instance(iid: str, timeout: float = 1800, expect: typing.Union[typing.Callable[[str], typing.Union[int, NoneType]], NoneType] = None, *, region=None) → int

Windows インスタンスの準備ができるまでお待ちください。

Windows インスタンスの準備ができていると判断するには、以下の条件を満たす必要があります。

  • インスタンスが running である必要があります。
  • インスタンスが ok である必要があります。
  • インスタンスコンソールから最新のアウトプットが提供されている場合、提供された expect callable は None 以外の値を返します。

重要

callable が None の場合 (提供されていない場合)、インスタンスコンソールへのアウトプットは、EXITCODE_MESSAGE_RE と一致し、このメソッドがユーザーデータスクリプトの終了コードを取得可能です。

パラメータ:
  • iid – AWS インスタンス ID。
  • timeout – RuntimeError が発生するまでのタイムアウト (秒)。
  • expect – Collable はコンソールアウトプットを引数として、None (準備ができていない場合) または終了コードを返します。
  • region (str) – Windows インスタンスの検索領域。
戻り値:

EXITCODE_MESSAGE_RE 正規表現で取得した expect の戻り値または終了コード。

バージョン 1.19.0 で追加.

class aws.AWSTool

genvid.toolbox.AWSTool の実装