Cookie の設定を選択する

当社は、当社のサイトおよびサービスを提供するために必要な必須 Cookie および類似のツールを使用しています。当社は、パフォーマンス Cookie を使用して匿名の統計情報を収集することで、お客様が当社のサイトをどのように利用しているかを把握し、改善に役立てています。必須 Cookie は無効化できませんが、[カスタマイズ] または [拒否] をクリックしてパフォーマンス Cookie を拒否することはできます。

お客様が同意した場合、AWS および承認された第三者は、Cookie を使用して便利なサイト機能を提供したり、お客様の選択を記憶したり、関連する広告を含む関連コンテンツを表示したりします。すべての必須ではない Cookie を受け入れるか拒否するには、[受け入れる] または [拒否] をクリックしてください。より詳細な選択を行うには、[カスタマイズ] をクリックしてください。

のソースとしての Amazon S3 の使用 AWS DMS

フォーカスモード
のソースとしての Amazon S3 の使用 AWS DMS - AWS Database Migration Service

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

を使用して、Amazon S3 バケットからデータを移行できます AWS DMS。これを行うには、1 つ以上のデータファイルを含む Amazon S3 バケットへのアクセスを提供します。その S3 バケットに、データおよびそれらのファイルのデータのデータベーステーブル間のマッピングを記述する JSON ファイルを含めます。

全ロードのスタート前に、ソース データ ファイルが Amazon S3 バケットに存在している必要があります。バケット名は、bucketName パラメータを使用して指定します。

ソースデータファイルは、次の形式で表すことができます。

カンマ区切り値 (.csv) 形式のソースデータファイルには、次の命名規則を使用して名前を付けます。この規則では、schemaName がソーススキーマで、tableName がそのスキーマ内のテーブルの名前です。

/schemaName/tableName/LOAD001.csv /schemaName/tableName/LOAD002.csv /schemaName/tableName/LOAD003.csv ...

たとえば、データファイルが次の Amazon S3 パスの mybucket にあるとします。

s3://mybucket/hr/employee

ロード時に、 はソーススキーマ名が でhr、ソーステーブル名が であると AWS DMS 想定しますemployee

bucketName (必須) に加えて、オプションで bucketFolderパラメータを指定して、 AWS DMS が Amazon S3 バケット内のデータファイルを検索する場所を指定できます。前の例を続けると、 bucketFolderを に設定した場合sourcedata、 は次のパスでデータファイルを AWS DMS 読み取ります。

s3://mybucket/sourcedata/hr/employee

追加の接続属性を使用して、列の区切り文字、行の区切り文字、null 値のインジケータ、およびその他のパラメータを指定できます。詳細については、「のソースとしての Amazon S3 のエンドポイント設定 AWS DMS」を参照してください。

次のとおり、ExpectedBucketOwner Amazon S3 エンドポイント設定を使用してバケット所有者を指定して、スナイプ攻撃を防ぐことができます。その後、接続をテストしたり移行の実行をリクエストしたりすると、S3 は指定されたパラメータに対してバケット所有者のアカウント ID をチェックします。

--s3-settings='{"ExpectedBucketOwner": "AWS_Account_ID"}'

のソースとしての Amazon S3 の外部テーブルの定義 AWS DMS

データファイルに加えて、外部テーブル定義も指定する必要があります。外部テーブル定義は、 が Amazon S3 AWS DMS からのデータを解釈する方法を説明する JSON ドキュメントです。 Amazon S3 このドキュメントの最大サイズは 2 MB です。 AWS DMS マネジメントコンソールを使用してソースエンドポイントを作成する場合は、テーブルマッピングボックスに JSON を直接入力できます。 AWS Command Line Interface (AWS CLI) または AWS DMS API を使用して移行を実行する場合は、JSON ファイルを作成して外部テーブル定義を指定できます。

以下のものが含まれるデータファイルがあるとします。

101,Smith,Bob,2014-06-04,New York 102,Smith,Bob,2015-10-08,Los Angeles 103,Smith,Bob,2017-03-13,Dallas 104,Smith,Bob,2017-03-13,Dallas

このデータ用の外部テーブル定義の例を次に示します。

{ "TableCount": "1", "Tables": [ { "TableName": "employee", "TablePath": "hr/employee/", "TableOwner": "hr", "TableColumns": [ { "ColumnName": "Id", "ColumnType": "INT8", "ColumnNullable": "false", "ColumnIsPk": "true" }, { "ColumnName": "LastName", "ColumnType": "STRING", "ColumnLength": "20" }, { "ColumnName": "FirstName", "ColumnType": "STRING", "ColumnLength": "30" }, { "ColumnName": "HireDate", "ColumnType": "DATETIME" }, { "ColumnName": "OfficeLocation", "ColumnType": "STRING", "ColumnLength": "20" } ], "TableColumnsTotal": "5" } ] }

この JSON ドキュメントの要素は次のとおりです。

TableCount - ソーステーブルの数。この例では、テーブルは 1 つしかありません。

Tables - ソーステーブルあたり 1 つの JSON マップで構成される配列。この例では、マップは 1 つしかありません。各マップは以下の要素で構成されています。

  • TableName - ソーステーブルの名前。

  • TablePath - AWS DMS が全データ ロード ファイルを見つけることができる Amazon S3 バケット内のパス。bucketFolder の値を指定した場合、この値がパスの先頭に付加されます。

  • TableOwner - このテーブルのスキーマ名。

  • TableColumns - 1 つ以上のマップの配列、それぞれがソーステーブルの列を記述します:

    • ColumnName - ソーステーブルの列の名前。

    • ColumnType - 列のデータ型。有効なデータ型については、「Amazon S3 のソースデータ型」をご参照ください。

    • ColumnLength - この列のバイト数。S3 ソースが完全 LOB モードをサポートしていないため、列の最大長は 2147483647 バイト (2,047 メガバイト) に制限されています。ColumnLength は次のデータ型に対して有効です:

      • BYTE

      • STRING

    • ColumnNullable - この列に NULL 値を含めることができる場合、true であるブール値 (デフォルト = false)。

    • ColumnIsPk - この列がプライマリ キーの一部である場合、true であるブール値 (デフォルト = false)。

    • ColumnDateFormat – DATE 型、TIME 型、DATETIME 型の列の入力日付形式。データ文字列を日付オブジェクトに解析するために使用される。可能な値は以下のとおりです:

      - YYYY-MM-dd HH:mm:ss - YYYY-MM-dd HH:mm:ss.F - YYYY/MM/dd HH:mm:ss - YYYY/MM/dd HH:mm:ss.F - MM/dd/YYYY HH:mm:ss - MM/dd/YYYY HH:mm:ss.F - YYYYMMdd HH:mm:ss - YYYYMMdd HH:mm:ss.F
  • TableColumnsTotal - 列の総数。この番号は、TableColumns 配列内の要素数と一致している必要があります。

特に指定しない場合、 ColumnLengthは が 0 AWS DMS であると想定します。

注記

サポートされているバージョンの では AWS DMS、S3 ソースデータに、列値の前の最初の列としてオプションのオペレーションTableName列を含めることもできます。このオペレーション列は、フルロード時にデータを S3 ターゲットエンドポイントに移行するために使用されるオペレーション (INSERT) を識別します。

存在する場合、この列の値は INSERT オペレーションキーワードの最初の文字 (I) です。指定されている場合、この列は通常、S3 ソースが以前の移行中に S3 ターゲットとして DMS によって作成されたことを示します。

3.4.2 以前の DMS バージョンでは、この列は以前の DMS 全ロードから作成された S3 ソースデータにはありませんでした。この列を S3 ターゲットデータに追加すると、S3 ターゲットに書き込まれるすべての行の形式を、全ロード中に書き込まれたか、CDC ロード中に書き込まれたかにかかわらず一貫させることができます。S3 ターゲットデータをフォーマットするオプションの詳細については、「移行済み S3 データでのソース DB オペレーションの表示」をご参照ください。

NUMERIC 型の列の場合は、精度とスケールを指定します。精度は数値の桁の合計数であり、スケールは小数点以下の桁数です。次に示すように、これには ColumnPrecision および ColumnScale 要素を使用します。

... { "ColumnName": "HourlyRate", "ColumnType": "NUMERIC", "ColumnPrecision": "5" "ColumnScale": "2" } ...

分数の秒を含むデータを持つ DATETIME 型の列の場合は、スケールを指定します。[Scale] (スケール) は小数秒の桁数で、0 ~ 9 の範囲で指定できます。次に示すように、これには ColumnScale 要素を使用します。

... { "ColumnName": "HireDate", "ColumnType": "DATETIME", "ColumnScale": "3" } ...

特に指定しない場合、 ColumnScaleはゼロ AWS DMS であると仮定し、小数秒を切り捨てます。

Amazon S3 を AWS DMSのソースとして CDC の使用

が全データロード AWS DMS を実行すると、オプションでターゲットエンドポイントにデータ変更をレプリケートできます。これを行うには、変更データキャプチャファイル (CDC ファイル) を Amazon S3 バケットにアップロードします。 は、アップロード時にこれらの CDC ファイルを AWS DMS 読み取り、ターゲットエンドポイントに変更を適用します。

CDC ファイルは次のように名前が付けられます。

CDC00001.csv CDC00002.csv CDC00003.csv ...
注記

変更データフォルダ内の CDC ファイルをレプリケートするには、辞書と同じ (順次) 順序で正常にアップロードします。たとえば、ファイル CDC00002.csv はファイル CDC00003.csv より前にアップロードします。そうしないと、CDC00002.csv はスキップされ、CDC00003.csv の後にロードするとレプリケートされません。一方、ファイル CDC00004.csv は、CDC00003.csv の後にロードされた場合に正常にレプリケートされます。

がファイルを見つける AWS DMS 場所を指定するには、 cdcPathパラメータを指定します。前の例を続けると、cdcPathchangedata に設定した場合、 AWS DMS は次のパスで CDC ファイルを読み取ります。

s3://mybucket/changedata

cdcPathchangedata に、bucketFoldermyFolder に設定した場合、 AWS DMS は次のパスで CDC ファイルを読み取ります。

s3://mybucket/myFolder/changedata

CDC ファイル内のレコードは次のような形式になります。

  • オペレーション - 実行する変更オペレーション: INSERT または IUPDATE または UDELETE または D。これらのキーワードと文字値では大文字と小文字は区別されません。

    注記

    サポートされている AWS DMS バージョンでは、 は 2 つの方法で各ロードレコードに対して実行するオペレーションを識別 AWS DMS できます。 AWS DMS は、レコードのキーワード値 ( などINSERT) またはキーワードの最初の文字 ( など) からこれを実行できますI。以前のバージョンでは、 は完全なキーワード値からのみロードオペレーション AWS DMS を認識していました。

    の以前のバージョンでは AWS DMS、CDC データをログに記録するために完全なキーワード値が書き込まれていました。さらに以前のバージョンでは、キーワード [initial] のみを使用して、S3 ターゲットにオペレーション値を書き込みました。

    両方の形式を認識する AWS DMS と、 はオペレーション列の記述方法に関係なくオペレーションを処理して S3 ソースデータを作成できます。このアプローチでは、後の移行のソースとして S3 ターゲットデータを使用できます このアプローチでは、後の S3 ソースのオペレーション列に表示されるキーワードの初期値の形式を変更する必要はありません。

  • テーブル名 - ソーステーブルの名前。

  • スキーマ名 - ソーススキーマの名前。

  • データ - 変更するデータを表す 1 つまたは複数の列。

employee という名前のテーブルの CDC ファイルの例を次に示します。

INSERT,employee,hr,101,Smith,Bob,2014-06-04,New York UPDATE,employee,hr,101,Smith,Bob,2015-10-08,Los Angeles UPDATE,employee,hr,101,Smith,Bob,2017-03-13,Dallas DELETE,employee,hr,101,Smith,Bob,2017-03-13,Dallas

のソースとして Amazon S3 を使用する場合の前提条件 AWS DMS

Amazon S3 を のソースとして使用するには AWS DMS、ソース S3 バケットが、データを移行する DMS レプリケーションインスタンスと同じ AWS リージョンにある必要があります。また、移行に使用する AWS アカウントには、ソースバケットへの読み取りアクセスも必要です。 AWS DMS バージョン 3.4.7 以降では、DMS は VPC エンドポイントまたはパブリックルートを介してソースバケットにアクセスする必要があります。VPC エンドポイントの詳細については、「VPC エンドポイントを DMS AWS ソースエンドポイントとターゲットエンドポイントとして設定する」を参照してください。

移行タスクの作成に使用されるユーザーアカウントに割り当てられた AWS Identity and Access Management (IAM) ロールには、次のアクセス許可のセットが必要です。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::mybucket*/*" ] }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::mybucket*" ] } ] }

移行タスクの作成に使用されるユーザーアカウントに割り当てられた AWS Identity and Access Management (IAM) ロールには、Amazon S3 バケットでバージョニングが有効になっている場合、次のアクセス許可のセットが必要です。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "S3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::mybucket*/*" ] }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::mybucket*" ] } ] }

のソースとして Amazon S3 を使用する場合の制限 AWS DMS

Amazon S3 をソースとして使用する場合、次の制限が適用されます。

  • S3 のバージョニングは有効にしません。S3 のバージョニングが必要な場合は、ライフサイクルポリシーを使用して古いバージョンを積極的に削除します。これを行わないと、S3 list-object コールのタイムアウトが原因でエンドポイント接続テストが失敗する可能性があります。S3 バケットのライフサイクルポリシーを作成するには、「ストレージのライフサイクルの管理」を参照してください。S3 オブジェクトのバージョンを削除するには、「バージョニングが有効なバケットからのオブジェクトバージョンの削除」を参照してください。

  • VPC 対応 (ゲートウェイ VPC) S3 バケットはバージョン 3.4.7 以降でサポートされます。

  • MySQL は time データ型を string に変換します。MySQL で time データ型値を表示するには、ターゲットテーブルの列を string として定義し、タスクの[ターゲットテーブル準備モード] 設定を [切り捨て] に設定します。

  • AWS DMS は、 BYTEBYTEの両方のデータ型に対して内部的に BYTES データ型を使用します。

  • S3 ソースエンドポイントは、DMS テーブルの再ロード機能をサポートしていません。

  • AWS DMS はAmazon S3とするフル LOB モードをサポートしていません。

Amazon S3 で Parquet 形式のファイルをソースとして使用する場合、次の制限が適用されます。

  • MMYYYYDD または DDMMYYYY 形式の日付は、S3 Parquet ソースの日付パーティション分割機能ではサポートされていません。

のソースとしての Amazon S3 のエンドポイント設定 AWS DMS

追加の接続属性の使用と同様、エンドポイントの設定を使用して、ソースの Amazon S3 データベースを設定できます。 AWS DMS コンソールを使用するか、 の create-endpoint コマンドを JSON --s3-settings '{"EndpointSetting": "value", ...}' 構文で使用してAWS CLI、ソースエンドポイントを作成するときに設定を指定します。

次の表は、ソースとして Amazon S3 を使用できるエンドポイント設定を説明しています。

オプション 説明
BucketFolder

(オプション) S3 バケットのフォルダ名。この属性を指定すると、ソースデータ ファイルおよび CDC ファイルがそれぞれパス s3://myBucket/bucketFolder/schemaName/tableName/s3://myBucket/bucketFolder/ から読み取られます。この属性が指定されない場合、使用されるパスは schemaName/tableName/ となります。

'{"BucketFolder": "sourceData"}'

BucketName

S3 バケットの名前。

'{"BucketName": "myBucket"}'

CdcPath CDC ファイルの場所。タスクで変更データをキャプチャする場合、この属性が必須です。それ以外の場合はオプションです。CdcPath が存在する場合、 はこのパスから CDC ファイルを AWS DMS 読み取り、データ変更をターゲットエンドポイントにレプリケートします。詳細については、「Amazon S3 を AWS DMSのソースとして CDC の使用」を参照してください。

'{"CdcPath": "changeData"}'

CsvDelimiter

ソースファイル内の列を分離するために使用される区切り文字。デフォルトではカンマを使用します。以下に例を示します。

'{"CsvDelimiter": ","}'

CsvNullValue

ソースから読み取るときに null として AWS DMS 扱うユーザー定義の文字列。デフォルトは空の文字列です。このパラメータを設定しない場合、 は空の文字列を null 値として AWS DMS 扱います。このパラメータを「\N」などの文字列に設定すると、 はこの文字列を null 値として AWS DMS 扱い、空の文字列を空の文字列値として扱います。

CsvRowDelimiter

ソースファイル内の行を分離するために使用される区切り文字。デフォルトでは、改行 (\n) です。

'{"CsvRowDelimiter": "\n"}'

DataFormat

Parquet 形式のデータを読み取るには、この値を Parquet に設定します。

'{"DataFormat": "Parquet"}'

IgnoreHeaderRows

この値を 1 に設定すると、 は .csv ファイルの最初の行ヘッダー AWS DMS を無視します。値が 1 の場合は機能が有効になり、値が 0 の場合は機能が無効になります。

デフォルトは 0 です。

'{"IgnoreHeaderRows": 1}'

Rfc4180

この値を true または y に設定するときは、先頭の二重引用符にはそれぞれ終了の二重引用符が続く必要があります。このフォーマットは、RFC 4180 に準拠しています。この値を false または n に設定すると、文字列リテラルはターゲットにそのままコピーされます。この場合、区切り文字 (行または列) はフィールドの末尾を表します。したがって、区切り文字は値の末尾を示すため、これを文字列の一部とすることはできません。

デフォルト: true

有効な値: truefalseyn

'{"Rfc4180": false}'

Amazon S3 のソースデータ型

のソースとして Amazon S3 を使用するデータ移行では、Amazon S3 から AWS DMS データ型にデータをマッピング AWS DMS する必要があります。詳細については、「のソースとしての Amazon S3 の外部テーブルの定義 AWS DMS」を参照してください。

ターゲットにマッピングされるデータ型を表示する方法については、使用しているターゲットエンドポイントのセクションをご参照ください。

AWS DMS データ型の詳細については、「」を参照してくださいAWS Database Migration Service のデータ型

Amazon S3 をソースとして使用するには、次の AWS DMS データ型を使用します。

Amazon S3 の Parquet 形式のファイルを のソースとして使用する AWS DMS

AWS DMS バージョン 3.5.3 以降では、S3 バケット内の Parquet 形式のファイルをフルロードレプリケーションまたは CDC レプリケーションの両方のソースとして使用できます。

DMS は、データを S3 ターゲットエンドポイントに移行することで DMS が生成するソースとして Parquet 形式のファイルのみをサポートしています。ファイル名はサポートされている形式である必要があります。そうでない場合、DMS は移行に含めません。

Parquet 形式のソースデータファイルは、次のフォルダと命名規則に従っている必要があります。

schema/table1/LOAD00001.parquet schema/table2/LOAD00002.parquet schema/table2/LOAD00003.parquet

Parquet 形式の CDC データのソースデータファイルの場合、次のフォルダと命名規則を使用して、名前を付けて保存します。

schema/table/20230405-094615814.parquet schema/table/20230405-094615853.parquet schema/table/20230405-094615922.parquet

Parquet 形式のファイルにアクセスするには、次のエンドポイント設定を設定します。

  • DataFormatParquet に設定します。

  • cdcPath 設定は設定しないでください。指定されたスキーマ / テーブルフォルダで Parquet 形式のファイルを作成してください。

S3 エンドポイント設定の詳細については、「AWS Database Migration Service API リファレンス」の「S3Settings」を参照してください。

Parquet 形式のファイルでサポートされているデータ型

AWS DMS は、Parquet 形式のファイルからデータを移行するときに、次のソースデータ型とターゲットデータ型をサポートします。移行する前に、ターゲットテーブルに正しいデータ型の列があることを確認します。

ソースデータ型 ターゲットのデータ型
BYTE BINARY
DATE DATE32
TIME TIME32
DATETIME TIMESTAMP
INT1 INT8
INT2 INT16
INT4 INT32
INT8 INT64
NUMERIC DECIMAL
REAL4 FLOAT
REAL8 DOUBLE
STRING STRING
UINT1 UINT8
UINT2 UINT16
UINT4 UINT32
UINT8 UINT
WSTRING STRING
BLOB BINARY
NCLOB STRING
CLOB STRING
BOOLEAN BOOL
プライバシーサイト規約Cookie の設定
© 2025, Amazon Web Services, Inc. or its affiliates.All rights reserved.