AWSDocAWS SDKGitHub サンプルリポジトリには、さらに多くの SDK サンプルがあります
翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS GlueJavaScript(v3) 用の SDK の用例
次のコード例は、を使用して (v3) を使用して (v3) で一般的なシナリオを実装して (v3) で一般的なシナリオを実装して (v3) で一般的なシナリオを実装してAWS SDK for JavaScript (v3)AWS Glue で一般的なシナリオを実装して、
「アクション」は、個々のサービス関数の呼び出し方法を示すコードの抜粋です。
「シナリオ」は、同じサービス内で複数の関数を呼び出して、特定のタスクを実行する方法を示すコード例です。
それぞれの例にはGitHub、へのリンクがあり、コンテキストでコードを設定および実行する方法についての説明が記載されています。
アクション
次のコード例は、AWS Glueクローラーを作成する方法を示しています。
- SDK forJavaScript (v3)
-
注記
他にもありますGitHub。用例一覧を検索し、AWS コード例リポジトリ
での設定と実行の方法を確認してください。 const createCrawler = (name, role, dbName, tablePrefix, s3TargetPath) => { const client = new GlueClient({ region: DEFAULT_REGION }); const command = new CreateCrawlerCommand({ Name: name, Role: role, DatabaseName: dbName, TablePrefix: tablePrefix, Targets: { S3Targets: [{ Path: s3TargetPath }], }, }); return client.send(command); };
-
API の詳細については、AWS SDK for JavaScriptAPI CreateCrawlerリファレンスのを参照してください。
-
次のコード例は、AWS Glueジョブ定義を作成する方法を示しています。
- SDK forJavaScript (v3)
-
注記
他にもありますGitHub。用例一覧を検索し、AWS コード例リポジトリ
での設定と実行の方法を確認してください。 const createJob = (name, role, scriptBucketName, scriptKey) => { const client = new GlueClient({ region: DEFAULT_REGION }); const command = new CreateJobCommand({ Name: name, Role: role, Command: { Name: "glueetl", PythonVersion: "3", ScriptLocation: `s3://${scriptBucketName}/${scriptKey}`, }, GlueVersion: "3.0", }); return client.send(command); };
-
API の詳細については、AWS SDK for JavaScriptAPI CreateJobリファレンスのを参照してください。
-
次のコード例は、AWS Glueクローラを削除する方法を示しています。
- SDK forJavaScript (v3)
-
注記
他にもありますGitHub。用例一覧を検索し、AWS コード例リポジトリ
での設定と実行の方法を確認してください。 const deleteCrawler = (crawlerName) => { const client = new GlueClient({ region: DEFAULT_REGION }); const command = new DeleteCrawlerCommand({ Name: crawlerName, }); return client.send(command); };
-
API の詳細については、AWS SDK for JavaScriptAPI DeleteCrawlerリファレンスのを参照してください。
-
次のコード例は、データベースを削除する方法を示していますAWS Glue Data Catalog。
- SDK forJavaScript (v3)
-
注記
他にもありますGitHub。用例一覧を検索し、AWS コード例リポジトリ
での設定と実行の方法を確認してください。 const deleteDatabase = (databaseName) => { const client = new GlueClient({ region: DEFAULT_REGION }); const command = new DeleteDatabaseCommand({ Name: databaseName, }); return client.send(command); };
-
API の詳細については、AWS SDK for JavaScriptAPI DeleteDatabaseリファレンスのを参照してください。
-
次のコード例は、AWS Glueジョブ定義と関連するすべての実行の削除方法を示しています。
- SDK forJavaScript (v3)
-
注記
他にもありますGitHub。用例一覧を検索し、AWS コード例リポジトリ
での設定と実行の方法を確認してください。 const deleteJob = (jobName) => { const client = new GlueClient({ region: DEFAULT_REGION }); const command = new DeleteJobCommand({ JobName: jobName, }); return client.send(command); };
-
API の詳細については、AWS SDK for JavaScriptAPI DeleteJobリファレンスのを参照してください。
-
次のコード例は、AWS Glue Data Catalogデータベースからテーブルを削除する方法を示しています。
- SDK forJavaScript (v3)
-
注記
他にもありますGitHub。用例一覧を検索し、AWS コード例リポジトリ
での設定と実行の方法を確認してください。 const deleteTable = (databaseName, tableName) => { const client = new GlueClient({ region: DEFAULT_REGION }); const command = new DeleteTableCommand({ DatabaseName: databaseName, Name: tableName, }); return client.send(command); };
-
API の詳細については、AWS SDK for JavaScriptAPI DeleteTableリファレンスのを参照してください。
-
次のコード例は、AWS Glueクローラーを取得する方法を示しています。
- SDK forJavaScript (v3)
-
注記
他にもありますGitHub。用例一覧を検索し、AWS コード例リポジトリ
での設定と実行の方法を確認してください。 const getCrawler = (name) => { const client = new GlueClient({ region: DEFAULT_REGION }); const command = new GetCrawlerCommand({ Name: name, }); return client.send(command); };
-
API の詳細については、AWS SDK for JavaScriptAPI GetCrawlerリファレンスのを参照してください。
-
次のコード例は、からデータベースを取得する方法を示していますAWS Glue Data Catalog。
- SDK forJavaScript (v3)
-
注記
他にもありますGitHub。用例一覧を検索し、AWS コード例リポジトリ
での設定と実行の方法を確認してください。 const getDatabase = (name) => { const client = new GlueClient({ region: DEFAULT_REGION }); const command = new GetDatabaseCommand({ Name: name, }); return client.send(command); };
-
API の詳細については、AWS SDK for JavaScriptAPI GetDatabaseリファレンスのを参照してください。
-
次のコード例は、AWS Glueジョブを実行する方法を示しています。
- SDK forJavaScript (v3)
-
注記
他にもありますGitHub。用例一覧を検索し、AWS コード例リポジトリ
での設定と実行の方法を確認してください。 const getJobRun = (jobName, jobRunId) => { const client = new GlueClient({ region: DEFAULT_REGION }); const command = new GetJobRunCommand({ JobName: jobName, RunId: jobRunId, }); return client.send(command); };
-
API の詳細については、AWS SDK for JavaScriptAPI GetJobRunリファレンスのを参照してください。
-
次のコード例は、AWS Glue Data Catalog からデータベースリストを取得する方法を示しています。
- SDK forJavaScript (v3)
-
注記
他にもありますGitHub。用例一覧を検索し、AWS コード例リポジトリ
での設定と実行の方法を確認してください。 const getDatabases = () => { const client = new GlueClient({ region: DEFAULT_REGION }); const command = new GetDatabasesCommand({}); return client.send(command); };
-
API の詳細については、AWS SDK for JavaScriptAPI GetDatabasesリファレンスのを参照してください。
-
次のコード例は、AWS Glue Data Catalog からジョブを取得する方法を示しています。
- SDK forJavaScript (v3)
-
注記
他にもありますGitHub。用例一覧を検索し、AWS コード例リポジトリ
での設定と実行の方法を確認してください。 const getJob = (jobName) => { const client = new GlueClient({ region: DEFAULT_REGION }); const command = new GetJobCommand({ JobName: jobName, }); return client.send(command); };
-
API の詳細については、AWS SDK for JavaScriptAPI GetJobリファレンスのを参照してください。
-
次のコード例は、AWS Glueジョブの実行方法を示しています。
- SDK forJavaScript (v3)
-
注記
他にもありますGitHub。用例一覧を検索し、AWS コード例リポジトリ
での設定と実行の方法を確認してください。 const getJobRuns = (jobName) => { const client = new GlueClient({ region: DEFAULT_REGION }); const command = new GetJobRunsCommand({ JobName: jobName, }); return client.send(command); };
-
API の詳細については、AWS SDK for JavaScriptAPI GetJobRunsリファレンスのを参照してください。
-
次のコード例は、のデータベースからテーブルを取得する方法を示していますAWS Glue Data Catalog。
- SDK forJavaScript (v3)
-
注記
他にもありますGitHub。用例一覧を検索し、AWS コード例リポジトリ
での設定と実行の方法を確認してください。 const getTables = (databaseName) => { const client = new GlueClient({ region: DEFAULT_REGION }); const command = new GetTablesCommand({ DatabaseName: databaseName, }); return client.send(command); };
-
API の詳細については、AWS SDK for JavaScriptAPI GetTablesリファレンスのを参照してください。
-
次のコード例は、AWS Glueジョブ定義を一覧表示する方法を示しています。
- SDK forJavaScript (v3)
-
注記
他にもありますGitHub。用例一覧を検索し、AWS コード例リポジトリ
での設定と実行の方法を確認してください。 const listJobs = () => { const client = new GlueClient({ region: DEFAULT_REGION }); const command = new ListJobsCommand({}); return client.send(command); };
-
API の詳細については、AWS SDK for JavaScriptAPI ListJobsリファレンスのを参照してください。
-
次のコード例は、AWS Glueクローラーを開始する方法を示しています。
- SDK forJavaScript (v3)
-
注記
他にもありますGitHub。用例一覧を検索し、AWS コード例リポジトリ
での設定と実行の方法を確認してください。 const startCrawler = (name) => { const client = new GlueClient({ region: DEFAULT_REGION }); const command = new StartCrawlerCommand({ Name: name, }); return client.send(command); };
-
API の詳細については、AWS SDK for JavaScriptAPI StartCrawlerリファレンスのを参照してください。
-
次のコード例は、AWS Glueジョブ実行を開始する方法を示しています。
- SDK forJavaScript (v3)
-
注記
他にもありますGitHub。用例一覧を検索し、AWS コード例リポジトリ
での設定と実行の方法を確認してください。 const startJobRun = (jobName, dbName, tableName, bucketName) => { const client = new GlueClient({ region: DEFAULT_REGION }); const command = new StartJobRunCommand({ JobName: jobName, Arguments: { "--input_database": dbName, "--input_table": tableName, "--output_bucket_url": `s3://${bucketName}/` } }); return client.send(command); };
-
API の詳細については、AWS SDK for JavaScriptAPI StartJobRunリファレンスのを参照してください。
-
シナリオ
次のコード例は、以下の操作方法を示しています。
パブリック Amazon S3 バケットをクロールし、CSV 形式のメタデータのデータベースを生成するクローラーを作成する。
AWS Glue Data Catalog 内のデータベースとテーブルに関する情報を一覧表示します。
S3 バケットから CSV 形式のデータを抽出するジョブを作成し、そのデータを変換して JSON 形式の出力を別の S3 バケットにロードする。
ジョブ実行に関する情報を一覧表示し、変換されたデータを表示してリソースをクリーンアップする。
詳細については、「チュートリアル: AWS Glue Studio の開始方法」をご参照ください。
- SDK forJavaScript (v3)
-
注記
他にもありますGitHub。用例一覧を検索し、AWS コード例リポジトリ
での設定と実行の方法を確認してください。 パブリックの Amazon Simple Storage Service (Amazon S3) バケットをクロールし、検出した CSV 形式データを記述するメタデータデータベースを生成するクローラーを作成して実行します。
const createCrawler = (name, role, dbName, tablePrefix, s3TargetPath) => { const client = new GlueClient({ region: DEFAULT_REGION }); const command = new CreateCrawlerCommand({ Name: name, Role: role, DatabaseName: dbName, TablePrefix: tablePrefix, Targets: { S3Targets: [{ Path: s3TargetPath }], }, }); return client.send(command); }; const getCrawler = (name) => { const client = new GlueClient({ region: DEFAULT_REGION }); const command = new GetCrawlerCommand({ Name: name, }); return client.send(command); }; const startCrawler = (name) => { const client = new GlueClient({ region: DEFAULT_REGION }); const command = new StartCrawlerCommand({ Name: name, }); return client.send(command); }; const crawlerExists = async ({ getCrawler }, crawlerName) => { try { await getCrawler(crawlerName); return true; } catch { return false; } }; const makeCreateCrawlerStep = (actions) => async (context) => { if (await crawlerExists(actions, process.env.CRAWLER_NAME)) { log("Crawler already exists. Skipping creation."); } else { await actions.createCrawler( process.env.CRAWLER_NAME, process.env.ROLE_NAME, process.env.DATABASE_NAME, process.env.TABLE_PREFIX, process.env.S3_TARGET_PATH ); log("Crawler created successfully.", { type: "success" }); } return { ...context }; }; const waitForCrawler = async (getCrawler, crawlerName) => { const waitTimeInSeconds = 30; const { Crawler } = await getCrawler(crawlerName); if (!Crawler) { throw new Error(`Crawler with name ${crawlerName} not found.`); } if (Crawler.State === "READY") { return; } log(`Crawler is ${Crawler.State}. Waiting ${waitTimeInSeconds} seconds...`); await wait(waitTimeInSeconds); return waitForCrawler(getCrawler, crawlerName); }; const makeStartCrawlerStep = ({ startCrawler, getCrawler }) => async (context) => { log("Starting crawler."); await startCrawler(process.env.CRAWLER_NAME); log("Crawler started.", { type: "success" }); log("Waiting for crawler to finish running. This can take a while."); await waitForCrawler(getCrawler, process.env.CRAWLER_NAME); log("Crawler ready.", { type: "success" }); return { ...context }; };
AWS Glue Data Catalog 内のデータベースとテーブルに関する情報を一覧表示します。
const getDatabase = (name) => { const client = new GlueClient({ region: DEFAULT_REGION }); const command = new GetDatabaseCommand({ Name: name, }); return client.send(command); }; const getTables = (databaseName) => { const client = new GlueClient({ region: DEFAULT_REGION }); const command = new GetTablesCommand({ DatabaseName: databaseName, }); return client.send(command); }; const makeGetDatabaseStep = ({ getDatabase }) => async (context) => { const { Database: { Name }, } = await getDatabase(process.env.DATABASE_NAME); log(`Database: ${Name}`); return { ...context }; }; const makeGetTablesStep = ({ getTables }) => async (context) => { const { TableList } = await getTables(process.env.DATABASE_NAME); log("Tables:"); log(TableList.map((table) => ` • ${table.Name}\n`)); return { ...context }; };
ソース Amazon S3 バケットから CSV 形式データを抽出し、フィールドを削除して名前を変更することで変換し、JSON 形式の出力を別の Amazon S3 バケットにロードするジョブを作成して実行します。
const createJob = (name, role, scriptBucketName, scriptKey) => { const client = new GlueClient({ region: DEFAULT_REGION }); const command = new CreateJobCommand({ Name: name, Role: role, Command: { Name: "glueetl", PythonVersion: "3", ScriptLocation: `s3://${scriptBucketName}/${scriptKey}`, }, GlueVersion: "3.0", }); return client.send(command); }; const startJobRun = (jobName, dbName, tableName, bucketName) => { const client = new GlueClient({ region: DEFAULT_REGION }); const command = new StartJobRunCommand({ JobName: jobName, Arguments: { "--input_database": dbName, "--input_table": tableName, "--output_bucket_url": `s3://${bucketName}/` } }); return client.send(command); }; const makeCreateJobStep = ({ createJob }) => async (context) => { log("Creating Job."); await createJob( process.env.JOB_NAME, process.env.ROLE_NAME, process.env.BUCKET_NAME, process.env.PYTHON_SCRIPT_KEY ); log("Job created.", { type: "success" }); return { ...context }; }; const waitForJobRun = async (getJobRun, jobName, jobRunId) => { const waitTimeInSeconds = 30; const { JobRun } = await getJobRun(jobName, jobRunId); if (!JobRun) { throw new Error(`Job run with id ${jobRunId} not found.`); } switch (JobRun.JobRunState) { case "FAILED": case "STOPPED": case "TIMEOUT": case "STOPPED": throw new Error( `Job ${JobRun.JobRunState}. Error: ${JobRun.ErrorMessage}` ); case "RUNNING": break; case "SUCCEEDED": return; default: throw new Error(`Unknown job run state: ${JobRun.JobRunState}`); } log( `Job ${JobRun.JobRunState}. Waiting ${waitTimeInSeconds} more seconds...` ); await wait(waitTimeInSeconds); return waitForJobRun(getJobRun, jobName, jobRunId); }; const promptToOpen = async (context) => { const { shouldOpen } = await context.prompter.prompt({ name: "shouldOpen", type: "confirm", message: "Open the output bucket in your browser?", }); if (shouldOpen) { return open( `https://s3.console.aws.amazon.com/s3/buckets/${process.env.BUCKET_NAME}?region=${DEFAULT_REGION}&tab=objects to view the output.` ); } }; const makeStartJobRunStep = ({ startJobRun, getJobRun }) => async (context) => { log("Starting job."); const { JobRunId } = await startJobRun( process.env.JOB_NAME, process.env.DATABASE_NAME, process.env.TABLE_NAME, process.env.BUCKET_NAME ); log("Job started.", { type: "success" }); log("Waiting for job to finish running. This can take a while."); await waitForJobRun(getJobRun, process.env.JOB_NAME, JobRunId); log("Job run succeeded.", { type: "success" }); await promptToOpen(context); return { ...context }; };
ジョブ実行に関する情報を一覧表示し、変換されたデータの一部を表示します。
const getJobRuns = (jobName) => { const client = new GlueClient({ region: DEFAULT_REGION }); const command = new GetJobRunsCommand({ JobName: jobName, }); return client.send(command); }; const getJobRun = (jobName, jobRunId) => { const client = new GlueClient({ region: DEFAULT_REGION }); const command = new GetJobRunCommand({ JobName: jobName, RunId: jobRunId, }); return client.send(command); }; const logJobRunDetails = async (getJobRun, jobName, jobRunId) => { const { JobRun } = await getJobRun(jobName, jobRunId); log(JobRun, { type: "object" }); }; const makePickJobRunStep = ({ getJobRuns, getJobRun }) => async (context) => { if (context.selectedJobName) { const { JobRuns } = await getJobRuns(context.selectedJobName); const { jobRunId } = await context.prompter.prompt({ name: "jobRunId", type: "list", message: "Select a job run to see details.", choices: JobRuns.map((run) => run.Id), }); logJobRunDetails(getJobRun, context.selectedJobName, jobRunId); } return { ...context }; };
デモによって作成されたすべてのリソースを削除します。
const deleteJob = (jobName) => { const client = new GlueClient({ region: DEFAULT_REGION }); const command = new DeleteJobCommand({ JobName: jobName, }); return client.send(command); }; const deleteTable = (databaseName, tableName) => { const client = new GlueClient({ region: DEFAULT_REGION }); const command = new DeleteTableCommand({ DatabaseName: databaseName, Name: tableName, }); return client.send(command); }; const deleteDatabase = (databaseName) => { const client = new GlueClient({ region: DEFAULT_REGION }); const command = new DeleteDatabaseCommand({ Name: databaseName, }); return client.send(command); }; const deleteCrawler = (crawlerName) => { const client = new GlueClient({ region: DEFAULT_REGION }); const command = new DeleteCrawlerCommand({ Name: crawlerName, }); return client.send(command); }; const handleDeleteJobs = async (deleteJobFn, jobNames, context) => { const { selectedJobNames } = await context.prompter.prompt({ name: "selectedJobNames", type: "checkbox", message: "Let's clean up jobs. Select jobs to delete.", choices: jobNames, }); if (selectedJobNames.length === 0) { log("No jobs selected."); } else { log("Deleting jobs."); await Promise.all( selectedJobNames.map((n) => deleteJobFn(n).catch(console.error)) ); log("Jobs deleted.", { type: "success" }); } }; const makeCleanUpJobsStep = ({ listJobs, deleteJob }) => async (context) => { const { JobNames } = await listJobs(); if (JobNames.length > 0) { await handleDeleteJobs(deleteJob, JobNames, context); } return { ...context }; }; const deleteTables = (deleteTable, databaseName, tableNames) => Promise.all( tableNames.map((tableName) => deleteTable(databaseName, tableName).catch(console.error) ) ); const makeCleanUpTablesStep = ({ getTables, deleteTable }) => async (context) => { const { TableList } = await getTables(process.env.DATABASE_NAME).catch( () => ({ TableList: null }) ); if (TableList && TableList.length > 0) { const { tableNames } = await context.prompter.prompt({ name: "tableNames", type: "checkbox", message: "Let's clean up tables. Select tables to delete.", choices: TableList.map((t) => t.Name), }); if (tableNames.length === 0) { log("No tables selected."); } else { log("Deleting tables."); await deleteTables(deleteTable, process.env.DATABASE_NAME, tableNames); log("Tables deleted.", { type: "success" }); } } return { ...context }; }; const deleteDatabases = (deleteDatabase, databaseNames) => Promise.all( databaseNames.map((dbName) => deleteDatabase(dbName).catch(console.error)) ); const makeCleanUpDatabasesStep = ({ getDatabases, deleteDatabase }) => async (context) => { const { DatabaseList } = await getDatabases(); if (DatabaseList.length > 0) { const { dbNames } = await context.prompter.prompt({ name: "dbNames", type: "checkbox", message: "Let's clean up databases. Select databases to delete.", choices: DatabaseList.map((db) => db.Name), }); if (dbNames.length === 0) { log("No databases selected."); } else { log("Deleting databases."); await deleteDatabases(deleteDatabase, dbNames); log("Databases deleted.", { type: "success" }); } } return { ...context }; }; const cleanUpCrawlerStep = async (context) => { log(`Deleting crawler.`); try { await deleteCrawler(process.env.CRAWLER_NAME); log("Crawler deleted.", { type: "success" }); } catch (err) { if (err.name === "EntityNotFoundException") { log(`Crawler is already deleted.`); } else { throw err; } } return { ...context }; };
-
API の詳細については、「AWS SDK for JavaScript API リファレンス」の以下のトピックを参照してください。
-