Compare commits

...

231 Commits

Author SHA1 Message Date
下田雅人
eee20d2653 Merge pull request #499 feature-NEWDWH2021-1744 into master 2025-06-16 11:06:44 +09:00
Nik Afiq
11c096d27f 2025年6月度脆弱性スキャン 2025-06-10 16:20:33 +09:00
朝倉 明日香
ffedc1d86d Merge pull request #478 release-v5.1.0 into master 2025-05-23 11:30:07 +09:00
下田雅人
381682243b Merge pull request #479 merge-conflict-20250523 into release-v5.1.0 2025-05-23 08:50:28 +09:00
shimoda.m@nds-tyo.co.jp
c80d437e56 Merge branch 'master' into merge-conflict-20250523 2025-05-23 08:49:42 +09:00
朝倉 明日香
5fc0e05e8c Merge pull request #472 feature-NEWDWH2021-1732 into master 2025-05-15 09:20:41 +09:00
Nik Afiq
370f598374 5月脆弱性スキャンのpipfileアップデート 2025-05-14 13:48:55 +09:00
小野 祥照
3ab9c3858c Merge pull request #470 feature-NEWDWH2021-1905-MailReplace into release-v5.1.0 2025-05-08 10:26:56 +09:00
mori.k
baf374118c メール本文中の「である」を「として、」に変更 2025-05-08 10:10:40 +09:00
mori.k
08c0239ec0 SAP受領/未受領通知の本文とタイトルの「Ⅰ/F」を「連携」に置換 2025-05-08 09:40:29 +09:00
朝倉 明日香
4f953da78c Merge pull request #469 feature-NEWDWH2021-1905 into release-v5.1.0 2025-05-08 07:02:53 +09:00
mori.k
f3b936db70 大文字のSAPを小文字のSAPに変更しました。 2025-05-07 18:23:02 +09:00
下田雅人
19df2f725b Merge pull request #466 feature-NEWDWH2021-1833 into master 2025-05-02 15:14:59 +09:00
下田雅人
e4c2d305d3 Merge pull request #463 feature-NEWDWH2021-1825 into develop-v5.1.0 2025-04-23 11:55:22 +09:00
shimoda.m@nds-tyo.co.jp
94e0325bec fix: numpyの要求Pythonバージョンが3.10以上になってしまったことにより、ったことにより、依存関係不足になり、Webアプリケーションが起動しない不具合を修正。 2025-04-21 10:05:38 +09:00
mori.k
a3d849a2b9 Merge branch 'master' into develop-v5.1.0 2025-04-17 14:22:08 +09:00
下田雅人
910322dc09 Merge pull request #465 featrue-NEWDWH2021-1831 into develop-v5.1.0 2025-04-17 13:19:06 +09:00
下田雅人
3e2beb998d Merge pull request #464 feature-NEWDWH2021-1743 into master 2025-04-17 12:57:21 +09:00
mori.k
c5426a4303 4月度脆弱性スキャンの資材 2025-04-16 17:51:31 +09:00
mori.k
39fdc3d60a 3.12アップデートを行った部分の脆弱性スキャンコマンドの修正 2025-04-14 14:55:28 +09:00
下田雅人
e607d2a71c Merge pull request #462 featrue-NEWDWH2021-1823 into develop-v5.1.0 2025-04-10 10:57:17 +09:00
mori.k
d57abee28d View セキュリティオプションチェックの問い合わせに関する文言を削除 2025-04-08 18:10:36 +09:00
mori.k
5a83987454 SAP関連 メルク様宛のアラート通知メールの文章変更 2025-04-08 15:27:29 +09:00
mori.k
7a74bba999 main.pyの変更を差し戻し 2025-04-04 10:19:22 +09:00
mori.k
c603eea19e 使用するpackageをgnupgからpython-gnupgに変更 2025-04-04 09:40:23 +09:00
mori.k
a173df8298 使用するイメージをpython:3.12-slim-bookwormに変更 2025-04-03 18:06:13 +09:00
mori.k
f51fb9c2a9 Pipfileに移行するためrequirements.txtを削除 2025-04-02 18:09:41 +09:00
mori.k
f5667157af public.ecr.aws/lambda/python:3.12イメージを使用 2025-04-02 17:57:39 +09:00
下田雅人
24546c3d7b Merge pull request #461 feature-NEWDWH2021-1820-ifx-dataimport-setting into develop-v5.1.0 2025-04-02 17:13:16 +09:00
下田雅人
53cd392262 Merge pull request #460 feature-NEWDWH2021-1820 into develop-v5.1.0 2025-04-02 17:12:47 +09:00
mori.k
5911220f9a スリム化の実施とPipfile及びPipfile.lockの再構成 2025-04-02 15:43:23 +09:00
mori.k
925acc70a5 不要項目の削除 2025-03-27 14:07:21 +09:00
mori.k
4d2d8cda83 レビュー指摘の過不足があった部分の修正 2025-03-27 13:40:33 +09:00
mori.k
345704f131 データ登録の設定ファイルの項目追加・削除の反映 2025-03-26 15:43:56 +09:00
mori.k
49d61ad6d7 CRMオブジェクトメンテナンスの追加・削除項目の変更 2025-03-26 09:40:32 +09:00
mori.k
8b8df71494 Merge branch 'develop-v5.1.0' into feature-NEWDWH2021-1820 2025-03-25 16:55:26 +09:00
mori.k
377b260c05 pipenv updateの実行 2025-03-25 16:39:40 +09:00
mori.k
8b511a948b Merge branch 'master' into develop-v5.1.0 2025-03-25 16:26:48 +09:00
mori.k
a46a42c333 Revert "CRMオブジェクトメンテナンスに伴うcrm_object_list_diffの最新化"
This reverts commit f7ebe9dc2be8268d1456e5f53adacefbaed0703a.
2025-03-25 13:30:24 +09:00
mori.k
69328196e8 Revert "今回変更を加えた項目のlast_fetch_datetimeを新規追加"
This reverts commit 623cf58a9474f50092f630a4c5aed8c9f34b7d47.
2025-03-25 13:29:14 +09:00
mori.k
f7ebe9dc2b CRMオブジェクトメンテナンスに伴うcrm_object_list_diffの最新化 2025-03-25 11:00:56 +09:00
mori.k
623cf58a94 今回変更を加えた項目のlast_fetch_datetimeを新規追加 2025-03-24 14:06:17 +09:00
朝倉 明日香
8985144263 Merge pull request #459 feature-NEWDWH2021-1738 into master 2025-03-17 11:22:16 +09:00
yono
7a22ab74ef refactor:脆弱性スキャン2025年3月度対応 2025-03-13 13:35:35 +09:00
下田雅人
19e5e1abc4 Merge pull request #458 feature-NEWDWH2021-1798 into develop-v5.1.0 2025-03-05 17:44:56 +09:00
下田雅人
2be5c5b229 Merge pull request #457 feature-NEWDWH2021-1796 into develop-v5.1.0 2025-03-05 13:16:01 +09:00
mori.k
1d3cb6ea67 verUP&スリム化 そのままbuildしたところgnupg is not installedとなったため、gnupgをインストールする一文を追加 2025-03-03 17:13:36 +09:00
mori.k
8dfef588bc verUP&スリム化 そのままbuildしたところgnupg is not installedとなったため、gnupgをインストールする一文を追加 2025-03-03 16:33:21 +09:00
下田雅人
bce0bbf3e9 Merge pull request #456 feature-NEWDWH2021-1795 into develop-v5.1.0 2025-02-28 15:25:47 +09:00
mori.k
2abb907779 WORKDIRに関わる記述を削除し、Pipfile、Pipfile.lockのコピー先を./に変更 2025-02-26 16:33:49 +09:00
mori.k
b718941395 スリム化の実施とPipfile及びPipfile.lockの再構成 2025-02-25 16:17:33 +09:00
朝倉 明日香
113bcd102e Merge pull request #455 release-v5.0.0 into master 2025-02-25 11:39:25 +09:00
下田雅人
0be701236b Merge pull request #453 feature-NEWDWH2021-1775 into develop-v5.1.0 2025-02-21 17:32:14 +09:00
下田雅人
c07360e8bb Merge pull request #454 feature-NEWDWH2021-1735 into master 2025-02-17 11:17:08 +09:00
下田雅人
062b0df54d Merge pull request #451 feature-NEWDWH2021-1770 into develop 2025-02-17 11:07:51 +09:00
mori.k
454a20f79c タグ付けを行う前にdocker pullを行うよう変更 2025-02-14 18:07:28 +09:00
yono
7c5c998284 refactor: 脆弱スキャンによる更新 2025-02-14 17:54:15 +09:00
mori.k
a6771be294 それぞれのテストケースの出力値を正しい書式に変更 2025-01-29 15:46:48 +09:00
mori.k
f811038c02 ツールのバージョンの記載を3.9.xから3.12.xに変更 2025-01-28 12:02:31 +09:00
mori.k
d32ae5b24a Pipfileのバージョン変更とそれに伴うPipfile.lockの変更 2025-01-28 10:31:23 +09:00
mori.k
519cb1c260 脆弱性スキャンツールのバージョンアップ対応 2025-01-27 16:39:20 +09:00
mori.k
b9bd007e91 CRMデータ取得のバージョンアップ対応及びログ出力の修正 2025-01-27 15:24:53 +09:00
下田雅人
f7b0fa09d0 Merge pull request #452 feature-NEWDWH2021-1774 into develop-v5.1.0 2025-01-27 09:33:29 +09:00
mori.k
08580204a2 脆弱性スキャンツールのスリム化に伴う修正 2025-01-24 14:43:48 +09:00
yono
9243343bbd feat:oneCIAM ID付けなおし対応でCRMの項目が増えたため設定ファイルの修正を行った 2025-01-15 18:51:45 +09:00
shimoda.m@nds-tyo.co.jp
2f38c1c526 feat: データ登録処理のPythonバージョンアップ・Dockerイメージスリム化 2025-01-09 14:28:04 +09:00
下田雅人
6a28baf983 Merge pull request #449 release-v4.8.0 into master 2024-12-19 09:24:17 +09:00
朝倉 明日香
4534922103 Merge pull request #447 feature-NEWDWH2021-1723-dataimport into develop 2024-12-16 11:18:32 +09:00
朝倉 明日香
4b278cb6ad Merge pull request #448 feather-NEWDWH2021-1376-calendar2025 into develop 2024-12-09 11:13:43 +09:00
Asuka Asakura
a1507f5cc1 2025年カレンダー 2024-12-09 09:30:01 +09:00
朝倉 明日香
95134e7348 Merge pull request #446 feature-NEWDWH2021-1723-crm-datafetch into develop 2024-12-02 16:22:59 +09:00
Asuka Asakura
69a9982c10 拡張SQLの不備修正 2024-12-02 16:20:48 +09:00
Asuka Asakura
778715148c Clm_Presentation_vod__c項目追加+履歴記録 2024-11-29 11:39:57 +09:00
shimoda.m@nds-tyo.co.jp
0a187fadd2 feat: Clm_Presentation_vod__cに2項目追加 2024-11-26 09:23:40 +09:00
朝倉 明日香
130dca2263 Merge pull request #445 master into develop 2024-11-12 13:23:24 +09:00
下田雅人
2b2077cbfc Merge pull request #444 feature-NEWDWH2021-1394 into master 2024-11-12 13:04:10 +09:00
Asuka Asakura
234c791282 2024年11月度脆弱性スキャン 2024-11-12 11:50:39 +09:00
下田雅人
beaf2ff9b6 Merge pull request #443 feature-NEWDWH2021-1710 into master 2024-11-11 11:26:59 +09:00
Nik Afiq
79bf28a4f7 ダイジェスト値ログに表示する 2024-11-09 14:02:08 +09:00
Nik Afiq
bfbfc5c7bb README更新 2024-11-09 14:01:41 +09:00
Nik Afiq
ac14adab01 ダイジェスト確認実装 2024-10-31 11:59:51 +09:00
下田雅人
89f33ccc8d Merge pull request #440 feature-NEWDWH2021-1717 into develop 2024-10-25 11:03:13 +09:00
朝倉 明日香
6f2e157103 Merge pull request #442 master into develop 2024-10-24 18:27:38 +09:00
朝倉 明日香
7910f33c6a Merge pull request #441 release-v4.7.0 into master 2024-10-24 18:20:33 +09:00
Asuka Asakura
872a8f7360 Encise社受領データの文字コードをUTF8に変更する 2024-10-24 11:58:07 +09:00
shimoda.m@nds-tyo.co.jp
7e634b9cc0 fix: 競合解決したらlockがおかしくなったので修正。 2024-10-24 09:21:29 +09:00
shimoda.m@nds-tyo.co.jp
6b4bc6a6ed Merge branch 'master' into release-v4.7.0 2024-10-24 09:15:26 +09:00
朝倉 明日香
d41d9c87b3 Merge pull request #439 feature-NEWDWH2021-1393 into master 2024-10-21 11:07:22 +09:00
shimoda.m@nds-tyo.co.jp
7f7b419bf3 feat: 10付き度脆弱性スキャンによる反映。 2024-10-15 10:51:08 +09:00
shimoda.m@nds-tyo.co.jp
f6588272cd fix: NEWDWH2021-794 の対応。重複行を削除。 2024-10-15 08:55:49 +09:00
下田雅人
6051b77709 Merge pull request #438 feature-NEWDWH2021-1699 into release-v4.7.0 2024-10-11 14:42:39 +09:00
shimoda.m@nds-tyo.co.jp
901643974e docs: パーミッション修正(所有者・グループにRDX権限、その他にR権限ん) 2024-10-10 14:44:11 +09:00
shimoda.m@nds-tyo.co.jp
379785b542 docs: レビュー指摘対応。サービス登録前にchmodする。 2024-10-10 14:42:30 +09:00
shimoda.m@nds-tyo.co.jp
5f513d974d docs: レビュー指摘対応。誤字修正。 2024-10-10 13:56:43 +09:00
shimoda.m@nds-tyo.co.jp
a6d74da063 docs: フォルダパス修正 2024-10-07 14:31:26 +09:00
shimoda.m@nds-tyo.co.jp
32c4e498f9 feat: 本番用の設定ファイルを追加 2024-10-07 10:47:57 +09:00
shimoda.m@nds-tyo.co.jp
55bbc69043 style: Descriptionをファイル名に合わせた 2024-10-07 10:47:43 +09:00
shimoda.m@nds-tyo.co.jp
a99e9d75dc docs: README追加 2024-10-07 10:47:27 +09:00
下田雅人
4d8f065de2 Merge pull request #437 develop into release-v4.7.0 2024-10-07 09:15:50 +09:00
下田雅人
77466af426 Merge pull request #436 feature-NEWDWH2021-1711 into develop 2024-10-02 09:07:15 +09:00
Asuka Asakura
1398cbe7bf Event_Attendee_vod__c項目追加 2024-10-01 14:53:12 +09:00
Asuka Asakura
8eaab2455c Event_Attendee_vod__c項目追加 2024-10-01 14:48:11 +09:00
朝倉 明日香
97d0c6f367 Merge pull request #434 feature-NEWDWH2021-1392 into master 2024-09-13 11:03:40 +09:00
下田雅人
50a4c0e615 Merge pull request #433 feature-NEWDWH2021-1568 into develop 2024-09-13 10:09:43 +09:00
朝倉 明日香
69af7b98be Merge pull request #432 feature-NEWDWH2021-1692 into develop 2024-09-13 07:57:08 +09:00
shimoda.m@nds-tyo.co.jp
bf611cd0cb fix: タグ再付与、本番へのPUSHはscan-pointタグ→ステージングlatest→本番とするように修正。
作業を途中で引き継いだ場合に本番へのPUSHができなくなるため。
2024-09-12 11:57:48 +09:00
shimoda.m@nds-tyo.co.jp
0a25b147e9 fix: crmデータ取得のバージョンミスがあったため、再ビルド 2024-09-12 11:50:13 +09:00
yuusuke_kanamura
2ffc80682d feat:インスタンス起動した際にsocatのプロセスを自動実行する処理の設定ファイルの作成 2024-09-10 17:57:36 +09:00
Asuka Asakura
31fcc86987 cd指定ミス修正 2024-09-10 10:26:36 +09:00
Asuka Asakura
62828d8e9b Userの取得NG項目を削除 2024-09-02 19:01:28 +09:00
Asuka Asakura
a6f19c2375 不要ファイル削除 2024-09-02 11:45:16 +09:00
朝倉 明日香
9098bdca6c Merge pull request #431 feature-NEWDWH2021-1686 into master 2024-09-02 11:14:27 +09:00
shimoda.m@nds-tyo.co.jp
a0cb93bcdb docs: READMEを更新 2024-08-30 16:52:20 +09:00
shimoda.m@nds-tyo.co.jp
b2cdb4dc2a fix: コマンドミスを修正 2024-08-30 16:42:48 +09:00
shimoda.m@nds-tyo.co.jp
e87dfd7aac feat: medパス社データ転送処理の脆弱性スキャンコマンドを追加 2024-08-30 16:35:32 +09:00
shimoda.m@nds-tyo.co.jp
de6069ead6 fix: シェルスクリプトのファイル名の誤りを修正 2024-08-30 16:29:21 +09:00
Asuka Asakura
d5f31e2c6d User取得NG項目ミス 2024-08-30 16:13:55 +09:00
Asuka Asakura
c20bf12c6e CRM Object Maintenance 2024-08-29 20:25:45 +09:00
Asuka Asakura
393bbd2bdc CRM Object Maintenance 2024-08-29 20:25:12 +09:00
Nik Afiq
5f3ef51454 README追加 2024-08-29 11:02:02 +09:00
Nik Afiq
8bdd70ba00 Readme追加 2024-08-27 11:49:28 +09:00
Nik Afiq
d4bcbddeae ECRアップデートスクリプト化実装 2024-08-27 11:42:24 +09:00
朝倉 明日香
99ef3a1d8a Merge pull request #429 master into develop 2024-08-26 11:03:25 +09:00
朝倉 明日香
edfc3cab8b Merge pull request #428 release-v4.6.0 into master 2024-08-26 11:03:00 +09:00
下田雅人
ae15dffef9 Merge pull request #427 fix-NEWDWH2021-1681-resolve-dependencies into develop 2024-08-21 16:26:24 +09:00
shimoda.m@nds-tyo.co.jp
39fd1383bd fix: pytestやpytest-htmlのバージョンが上がったことに伴い、単体テストが動かなくなっていたのを修正。また、s3のテストが元のモジュールの修正が適用されていなかったため、修正した。 2024-08-21 15:57:28 +09:00
shimoda.m@nds-tyo.co.jp
dd891aa548 fix: simple-salesforce 1.12.6で必要となる依存モジュールがlockファイルから抜けていたのを修正。 2024-08-21 15:12:36 +09:00
下田雅人
18f6e0391b Merge pull request #426 feature-NEWDWH2021-1681 into develop 2024-08-20 12:22:52 +09:00
shimoda.m@nds-tyo.co.jp
9a08d71bff Merge branch 'master' into feature-NEWDWH2021-1681 2024-08-20 11:10:53 +09:00
朝倉 明日香
dfc734f4d7 Merge pull request #424 master into release-v4.6.0 2024-08-19 11:35:07 +09:00
朝倉 明日香
6f3ecac69b Merge pull request #423 release-v4.5.0 into master 2024-08-19 11:33:26 +09:00
朝倉 明日香
812adb4641 Merge pull request #422 feature-NEWDWH2021-1391 into master 2024-08-19 11:32:33 +09:00
Nik Afiq
a616373297 8月脆弱性スキャン実施 2024-08-14 11:26:57 +09:00
下田雅人
8e6413caaf Merge pull request #421 feature-NEWDWH2021-1677 into release-v4.6.0 2024-08-05 13:39:09 +09:00
Nik Afiq
6f3f205a62 I-02-02ログから日付→データソースのみ表示に変更 2024-08-05 13:19:27 +09:00
朝倉 明日香
5027a72a50 Merge pull request #420 feature-NEWDWH2021-1666 into develop 2024-08-05 11:36:14 +09:00
shimoda.m@nds-tyo.co.jp
465cf4b8ac feat: CRMデータ取得のSalesforceAPIバージョンの最新化 2024-08-05 09:32:17 +09:00
下田雅人
c54f8a3836 Merge pull request #419 develop-v4.6.0 into develop 2024-07-24 13:05:30 +09:00
下田雅人
98dd3c6f81 Merge pull request #418 develop-v4.6.0 into release-v4.6.0 2024-07-24 13:03:01 +09:00
朝倉 明日香
a07edd5503 Merge pull request #417 feature-NEWDWH2021-1661 into develop-v4.6.0 2024-07-24 11:30:41 +09:00
yuusuke_kanamura
31c9ecba08 feat:CSV項目の末尾のカンマを削除 2024-07-23 11:43:45 +09:00
yuusuke_kanamura
e46ac4e2e2 feat:ダミー項目をヘッダ項目数から削除 2024-07-23 10:49:27 +09:00
yuusuke_kanamura
d049534ab9 feat:Medパス社データ仕様を吸収するためのダミー項目の追加対応 2024-07-22 17:53:57 +09:00
朝倉 明日香
ab1ed8c55a Merge pull request #416 develop into release-v4.5.0 2024-07-22 11:27:15 +09:00
朝倉 明日香
043d892eb2 Merge pull request #415 release-v4.4.0 into master 2024-07-22 11:19:52 +09:00
朝倉 明日香
ba80ca951e Merge pull request #413 feature-NEWDWH2021-1616 into develop-v4.6.0 2024-07-19 17:30:09 +09:00
Nik Afiq
9388ce0ee7 ログ表示変更 2024-07-19 16:30:51 +09:00
Nik Afiq
5d55d438ed 重複通知にファイルディレクトリ表示追加 2024-07-19 15:30:56 +09:00
朝倉 明日香
5a2fa9864a Merge pull request #414 feature-NEWDWH2021-1620 into develop-v4.6.0 2024-07-19 15:24:18 +09:00
Nik Afiq
994c40ec55 仕様に合わせた通知表示変更 2024-07-19 14:59:19 +09:00
朝倉 明日香
93945ae643 Merge pull request #409 feature-NEWDWH2021-1609 into develop-v4.6.0 2024-07-19 10:39:14 +09:00
Nik Afiq
610a0acdf1 ログ表示変更 2024-07-18 16:04:21 +09:00
shimoda.m@nds-tyo.co.jp
e0ed18efaf fix: エラーログのID修正 2024-07-18 14:16:48 +09:00
shimoda.m@nds-tyo.co.jp
1b3995d465 fix: ログ文言修正 2024-07-18 13:54:37 +09:00
Nik Afiq
63c00f61b7 Revert "ログ表示変更"
This reverts commit 84b2fbafab12acb6b09b3606d2080dba38f7de90.
2024-07-18 09:54:24 +09:00
Nik Afiq
84b2fbafab ログ表示変更 2024-07-17 18:13:36 +09:00
Nik Afiq
96a14447e6 正規表現修正 2024-07-17 16:27:51 +09:00
shimoda.m@nds-tyo.co.jp
cada4f7b09 style: コメント修正 2024-07-17 10:43:56 +09:00
shimoda.m@nds-tyo.co.jp
a058ef2d75 fix: ログからSNSにPublishする機能のSubjectが長すぎるとエラーになる問題を修正。 2024-07-17 10:38:30 +09:00
shimoda.m@nds-tyo.co.jp
9dbff34bf5 feat: 拡張SQL修正 2024-07-17 10:34:18 +09:00
shimoda.m@nds-tyo.co.jp
3c761cd038 feat: 正規表現の解釈方法を修正。コンフィグのキーの誤りを修正。 2024-07-17 10:29:59 +09:00
Nik Afiq
b01f488b08 誤字修正・本文からタイトル削除 2024-07-17 10:19:33 +09:00
yuusuke_kanamura
54c3646cc4 feat:NULL判定の追加 2024-07-17 10:13:49 +09:00
yuusuke_kanamura
fa68ea7d8a feat:文字型項目(_org)がNULL判定の削除 2024-07-17 10:12:40 +09:00
Nik Afiq
0d93f26bbf 設定ファイル追加 2024-07-17 09:54:08 +09:00
Nik Afiq
fd975d55c8 メール作成機能変更 2024-07-17 09:23:58 +09:00
Nik Afiq
384e069fb8 未受領チェック実装 2024-07-16 16:38:45 +09:00
shimoda.m@nds-tyo.co.jp
42fe7804c4 fix: Palantirのファイル名正規表現を修正 2024-07-16 16:09:00 +09:00
shimoda.m@nds-tyo.co.jp
838f5122fe feat: S3バケット間ファイル転送処理を追加 2024-07-16 16:06:04 +09:00
下田雅人
f2967be8f9 Merge pull request #412 master into release-v4.4.0 2024-07-16 14:42:04 +09:00
下田雅人
ef740bf707 Merge pull request #411 master into develop-v4.6.0 2024-07-16 14:41:30 +09:00
下田雅人
df428d8d2e Merge pull request #410 master into develop 2024-07-16 14:40:56 +09:00
下田雅人
fc4cf368fc Merge pull request #408 feature-NEWDWH2021-1390 into master 2024-07-16 11:28:13 +09:00
yuusuke_kanamura
8f0e0ec65f feat:ストアドファンクションの作成 2024-07-16 10:25:43 +09:00
yuusuke_kanamura
21126da1ba feat:拡張SQLの修正 2024-07-16 09:06:34 +09:00
yuusuke_kanamura
d3d3b95f34 feat:全角スペースを半角スペースに修正 2024-07-11 14:56:06 +09:00
yuusuke_kanamura
bc7795ee3d feat:hcp_web_access_logコメント修正 2024-07-11 14:46:03 +09:00
yuusuke_kanamura
473328c639 feat:SQLの予約語を大文字に修正、JST変換についてコメントを追記 2024-07-11 14:45:01 +09:00
yuusuke_kanamura
6ee8085a07 feat:HCPウェブ 拡張SQLの作成 2024-07-11 12:53:31 +09:00
yuusuke_kanamura
8a7fb7381c feat:HCPウェブ 個別設定ファイルの作成 2024-07-11 11:35:09 +09:00
yuusuke_kanamura
0506f20484 feat:HCPウェブ Viewオプションチェック対象スキーマ名ファイル修正 2024-07-11 11:32:48 +09:00
yuusuke_kanamura
0b5e0653d7 feat:HCPウェブ個別設定マッピングリストの作成 2024-07-11 11:31:35 +09:00
shimoda.m@nds-tyo.co.jp
ead269d5b3 feat: 2024年脆弱性スキャン対応のパッチ適用。 2024-07-10 12:47:39 +09:00
下田雅人
e3d8769c17 Merge pull request #406 feature-NEWDWH2021-1618 into develop-v4.6.0 2024-07-08 16:11:13 +09:00
Nik Afiq
bd76231de4 途中コミット 2024-07-04 17:27:26 +09:00
朝倉 明日香
f2e19041e6 Merge pull request #407 feature-NEWDWH2021-1633 into develop 2024-07-02 16:29:38 +09:00
yuusuke_kanamura
4afecb847b feat:朝倉さんの指摘修正対応のためコールのカラム名の修正 2024-07-02 14:23:40 +09:00
yuusuke_kanamura
2860614d2d feat:コールのカラム追加による、ストアドプロシージャーの修正 2024-07-02 14:16:58 +09:00
yuusuke_kanamura
a127f3e541 feat:オブジェクト追加対応、カラム追加による設定ファイルの修正 2024-07-02 10:40:05 +09:00
shimoda.m@nds-tyo.co.jp
7156fab12e feat: (たぶんないけど、)拡張子大文字の考慮 2024-07-01 16:30:24 +09:00
shimoda.m@nds-tyo.co.jp
ad8c18aa23 style: コメント修正 2024-07-01 16:23:15 +09:00
shimoda.m@nds-tyo.co.jp
d26f4c5a3f fix: ログ修正 2024-07-01 16:17:39 +09:00
shimoda.m@nds-tyo.co.jp
d16762a701 fix: ログ出力文言修正 2024-07-01 16:09:49 +09:00
shimoda.m@nds-tyo.co.jp
bc29d22526 feat: 設計に合わせて実装修正 2024-07-01 15:23:38 +09:00
shimoda.m@nds-tyo.co.jp
8397998bb3 feat: インストールするライブラリを最適化 2024-07-01 11:27:16 +09:00
shimoda.m@nds-tyo.co.jp
479fe869bf feat: python3.12に対応。Dockerfileを最適化。 2024-07-01 09:43:00 +09:00
shimoda.m@nds-tyo.co.jp
54d5961614 feat: 新規作成。コードベースは実装検証時のものを利用。 2024-06-27 17:31:34 +09:00
朝倉 明日香
fc49549004 Merge pull request #404 master into release-v4.4.0 2024-06-18 11:18:31 +09:00
朝倉 明日香
b3dc77fa44 Merge pull request #403 master into develop 2024-06-18 11:17:47 +09:00
朝倉 明日香
17ffbc136c Merge pull request #402 feature-NEWDWH2021-1389 into master 2024-06-18 11:16:46 +09:00
Nik Afiq
185953b359 6月脆弱性スキャン 2024-06-13 08:49:16 +09:00
下田雅人
318373a321 Merge pull request #401 develop into release-v4.4.0 2024-05-27 12:03:53 +09:00
下田雅人
3b5f19754c Merge pull request #400 master into develop 2024-05-27 12:01:20 +09:00
朝倉 明日香
ed49c81153 Merge pull request #395 feature-NEWDWH2021-880 into develop 2024-05-27 11:26:38 +09:00
朝倉 明日香
a7fe7f58c5 Merge pull request #399 release-emp-chg-inst into master 2024-05-27 11:24:41 +09:00
Nik Afiq
ea5b8a930d クラス関数の変数変更 2024-05-21 16:09:11 +09:00
朝倉 明日香
ac881db8f3 Merge pull request #397 master into develop 2024-05-20 11:32:43 +09:00
Nik Afiq
de1e82273e getとread処理分けた・インターフェース命名変更 2024-05-15 11:19:00 +09:00
Nik Afiq
e55e95a6e9 sap-fin-receive-check-daily-fix 2024-05-15 10:13:40 +09:00
Nik Afiq
29780dab94 check-view-option-fix 2024-05-14 17:41:54 +09:00
Nik Afiq
98da72acb0 sap-sup-receive-check-monthly-fix 2024-05-14 17:35:08 +09:00
Nik Afiq
29f279702d sap-sup-monthly-data-fix 2024-05-14 17:21:43 +09:00
Nik Afiq
d0c37c962c sap-sup-receive-check-daily-fix 2024-05-14 16:57:17 +09:00
Nik Afiq
eb9b70cbb3 sap-fin-receive-check-monthly-fix 2024-05-14 16:22:55 +09:00
Nik Afiq
86945ad25d sap-fin-check-daily-fix 2024-05-13 17:52:53 +09:00
Nik Afiq
2ce1998418 sap-fin-monthly-data-fix 2024-05-13 16:29:42 +09:00
Nik Afiq
2471c86c6c sap-data-decrypt-fix 2024-05-13 16:17:00 +09:00
Nik Afiq
b5a6dde1a5 crm-datafech fix 2024-05-13 09:43:11 +09:00
下田雅人
2f0b9e35e2 Merge pull request #394 master into develop 2024-05-09 18:00:29 +09:00
Nik Afiq
c43f5aa408 Merge branch 'develop' into feature-NEWDWH2021-880 2024-05-08 14:06:13 +09:00
Nik Afiq
1dc58e577f Merge branch 'develop' into feature-NEWDWH2021-880 2024-05-08 13:53:43 +09:00
下田雅人
82b4de78c5 Merge pull request #392 develop-emp-chg-inst into develop 2024-05-08 13:34:04 +09:00
朝倉 明日香
2ee3161e30 Merge pull request #389 master into develop 2024-04-26 15:35:11 +09:00
下田雅人
7e8b26c378 Merge pull request #381 master into develop 2024-04-18 11:46:04 +09:00
朝倉 明日香
528b87fda9 Merge pull request #375 master into develop 2024-04-12 17:31:01 +09:00
shimoda.m@nds-tyo.co.jp
b8975ad453 feat: データ登録処理 メイン処理内のresourceインタフェースをクライアントインタフェースに変更 2023-01-30 11:17:41 +09:00
shimoda.m@nds-tyo.co.jp
7a21b22861 feat: データ登録処理 エラー処理内のresourceインタフェースをクライアントインタフェースに変更 2023-01-30 10:33:19 +09:00
shimoda.m@nds-tyo.co.jp
7a86e834dc feat: ローカルで実行できるように実行用コードを追加。普段はコメントアウト。 2023-01-27 17:58:29 +09:00
shimoda.m@nds-tyo.co.jp
419bad2690 feat: データ登録処理 終了処理内のresourceインタフェースをクライアントインタフェースに変更 2023-01-27 17:55:09 +09:00
shimoda.m@nds-tyo.co.jp
d5c6485a72 feat: データ登録処理 チェック処理内のresourceインタフェースをクライアントインタフェースに変更 2023-01-27 16:22:24 +09:00
shimoda.m@nds-tyo.co.jp
1a1499a189 feat: データ登録処理 初期処理内のresourceインタフェースをクライアントインタフェースに変更 2023-01-27 16:10:27 +09:00
169 changed files with 5264 additions and 3251 deletions

62
ec2/README.md Normal file
View File

@ -0,0 +1,62 @@
# EC2インスタンス管理資材
## NLBゲートウェイ インスタンス 起動スクリプト
### 目的
Merck様のDB接続経路としてのNLBから、Auroraデータベースに踏み台アクセスを行うため、ゲートウェイの機能を提供するEC2インスタンスを稼働している。
EC2インスタンス内では、NLBからの任意のポートをAuroraデータベースのポートにフォワーディングするために、`socat`プロセスを動かす必要がある。
`socat`プロセスを動かすためのコマンドと、EC2インスタンス起動時にプロセスを実行するためのsystemdの設定を配置している。
### フォルダ構成
```txt
.
├── README.md -- 当ファイル
└── gateway
├── staging -- ステージング環境用設定
│ ├── public1-1 -- ap-northeast-1aのインスタンス要設定
│ │ ├── socat-dbconnection-1a.service -- systemdにsocatプロセスを登録するためのファイル
│ │ └── socat-portforwarding-1a.sh -- socatでAuroraデータベースにポートフォワーディングするためのシェルスクリプト
│ └── public2-1 -- ap-northeast-1dのインスタンス要設定
│ ├── socat-dbconnection-1d.service
│ └── socat-portforwarding-1d.sh
├── product -- 本番環境用設定
│ ├── public1-1
│ │ ├── socat-dbconnection-1a.service
│ │ └── socat-portforwarding-1a.sh
│ └── public2-1
│ ├── socat-dbconnection-1d.service
│ └── socat-portforwarding-1d.sh
```
### ファイル配置方法(両環境共通)
- 対象のゲートウェイEC2インスタンスにログインする
- セッションマネージャーでログインした場合は、`ec2-user`に切り替えること(`sudo su --login ec2-user`)
- 以下の操作を実行し、`socat`プロセスを起動するシェルスクリプトを配置する。
- **ap-northeast-1aのインスタンス(public-1-1)の場合**
- `sudo vi /opt/socat-portforwarding-1a.sh`コマンドを実行する。
- `ec2/gateway/<環境名>/public-1-1/socat-portforwarding-1a.sh`の内容をコピペして保存する。
- `sudo chmod 774 /opt/socat-portforwarding-1a.sh`コマンドを実行する。
- **ap-northeast-1dのインスタンス(public-2-1)の場合**
- `sudo vi /opt/socat-portforwarding-1d.sh`コマンドを実行する。
- `ec2/gateway/<環境名>/public-2-1/socat-portforwarding-1d.sh`の内容をコピペして保存する。
- `sudo chmod 774 /opt/socat-portforwarding-1d.sh`コマンドを実行する。
- 以下の操作を実行し、`socat`プロセスを常駐させるためのサービス設定ファイルを配置する。
- **ap-northeast-1aのインスタンス(public-1-1)の場合**
- `sudo vi /etc/systemd/system/socat-dbconnection-1a.service`コマンドを実行する。
- `ec2/gateway/<環境名>/public-1-1/socat-dbconnection-1a.service`の内容をコピペして保存する。
- `sudo chmod 774 /etc/systemd/system/socat-dbconnection-1a.service`コマンドを実行する。
- **ap-northeast-1dのインスタンス(public-2-1)の場合**
- `sudo vi /etc/systemd/system/socat-dbconnection-1d.service`コマンドを実行する。
- `ec2/gateway/<環境名>/public-2-1/socat-dbconnection-1d.service`の内容をコピペして保存する。
- `sudo chmod 774 /etc/systemd/system/socat-dbconnection-1d.service`コマンドを実行する。
- 以下の操作を実行し、`socat`プロセスを起動するスクリプトをsystemdに登録する
- **ap-northeast-1aのインスタンス(public-1-1)の場合**
- `sudo systemctl enable socat-dbconnection-1a.service`コマンドを実行し、サービスを有効化する。
- `sudo systemctl status socat-dbconnection-1a.service`コマンドを実行し、サービスのステータスを確認する。`enabled;`となっていればOK
- **ap-northeast-1dのインスタンス(public-2-1)の場合**
- `sudo systemctl enable socat-dbconnection-1d.service`コマンドを実行し、サービスを有効化する。
- `sudo systemctl status socat-dbconnection-1d.service`コマンドを実行し、サービスのステータスを確認する。`enabled;`となっていればOK

View File

@ -0,0 +1,10 @@
[Unit]
Description = socat-dbconnection-1a
[Service]
ExecStart = /opt/socat-portforwarding-1a.sh
Type = oneshot
RemainAfterExit = yes
[Install]
WantedBy = default.target

View File

@ -0,0 +1,3 @@
#!/bin/bash
socat tcp4-listen:40001,reuseaddr,fork TCP:mbj-newdwh2021-product-dbcluster-instance-1.chs11qsgoyix.ap-northeast-1.rds.amazonaws.com:3306 &
socat tcp4-listen:50001,reuseaddr,fork TCP:mbj-newdwh2021-product-dbcluster.cluster-chs11qsgoyix.ap-northeast-1.rds.amazonaws.com:3306 &

View File

@ -0,0 +1,10 @@
[Unit]
Description = socat-dbconnection-1d
[Service]
ExecStart = /opt/socat-portforwarding-1d.sh
Type = oneshot
RemainAfterExit = yes
[Install]
WantedBy = default.target

View File

@ -0,0 +1,3 @@
#!/bin/bash
socat tcp4-listen:40001,reuseaddr,fork TCP:mbj-newdwh2021-product-dbcluster-instance-1-ap-northeast-1d.chs11qsgoyix.ap-northeast-1.rds.amazonaws.com:3306 &
socat tcp4-listen:50001,reuseaddr,fork TCP:mbj-newdwh2021-product-dbcluster.cluster-chs11qsgoyix.ap-northeast-1.rds.amazonaws.com:3306 &

View File

@ -0,0 +1,10 @@
[Unit]
Description = socat-dbconnection-1a
[Service]
ExecStart = /opt/socat-portforwarding-1a.sh
Type = oneshot
RemainAfterExit = yes
[Install]
WantedBy = default.target

View File

@ -0,0 +1,3 @@
#!/bin/bash
socat tcp4-listen:40001,reuseaddr,fork TCP:mbj-newdwh2021-staging-dbcluster-instance-1.chs11qsgoyix.ap-northeast-1.rds.amazonaws.com:3306 &
socat tcp4-listen:50001,reuseaddr,fork TCP:mbj-newdwh2021-staging-dbcluster.cluster-chs11qsgoyix.ap-northeast-1.rds.amazonaws.com:3306 &

View File

@ -0,0 +1,10 @@
[Unit]
Description = socat-dbconnection-1d
[Service]
ExecStart = /opt/socat-portforwarding-1d.sh
Type = oneshot
RemainAfterExit = yes
[Install]
WantedBy = default.target

View File

@ -0,0 +1,3 @@
#!/bin/bash
socat tcp4-listen:40001,reuseaddr,fork TCP:mbj-newdwh2021-staging-dbcluster-instance-1-ap-northeast-1d.chs11qsgoyix.ap-northeast-1.rds.amazonaws.com:3306 &
socat tcp4-listen:50001,reuseaddr,fork TCP:mbj-newdwh2021-staging-dbcluster.cluster-chs11qsgoyix.ap-northeast-1.rds.amazonaws.com:3306 &

View File

@ -1,15 +1,15 @@
FROM python:3.9 FROM python:3.12-slim-bookworm
ENV TZ="Asia/Tokyo" ENV TZ="Asia/Tokyo"
# pythonの標準出力をバッファリングしないフラグ
ENV PYTHONUNBUFFERED=1
# pythonのバイトコードを生成しないフラグ
ENV PYTHONDONTWRITEBYTECODE=1
WORKDIR /usr/src/app WORKDIR /usr/src/app
COPY Pipfile Pipfile.lock ./ COPY Pipfile Pipfile.lock ./
RUN \ RUN \
apt update -y && \ apt update -y && \
# パッケージのセキュリティアップデートのみを適用するコマンド
apt install -y unattended-upgrades && \
unattended-upgrades && \
pip install --upgrade pip wheel setuptools && \
pip install pipenv --no-cache-dir && \ pip install pipenv --no-cache-dir && \
pipenv install --system --deploy && \ pipenv install --system --deploy && \
pip uninstall -y pipenv virtualenv-clone virtualenv pip uninstall -y pipenv virtualenv-clone virtualenv

View File

@ -11,7 +11,7 @@ test = "pytest tests/"
[packages] [packages]
boto3 = "*" boto3 = "*"
simple-salesforce = "==1.12.4" simple-salesforce = "==1.12.6"
tenacity = "*" tenacity = "*"
[dev-packages] [dev-packages]
@ -23,4 +23,4 @@ pytest-html = "*"
moto = "*" moto = "*"
[requires] [requires]
python_version = "3.9" python_version = "3.12"

File diff suppressed because it is too large Load Diff

View File

@ -4,7 +4,7 @@
### ツールのバージョン ### ツールのバージョン
- Python 3.9.x - Python 3.12.x
- PipEnv(Pythonの依存関係管理用モジュール) - PipEnv(Pythonの依存関係管理用モジュール)
### 開発環境 ### 開発環境

View File

@ -12,87 +12,87 @@ from src.system_var.environments import (CRM_BACKUP_BUCKET, CRM_CONFIG_BUCKET,
RESPONSE_JSON_BACKUP_FOLDER) RESPONSE_JSON_BACKUP_FOLDER)
class S3Resource: class S3Client:
def __init__(self, bucket_name: str) -> None: def __init__(self, bucket_name: str) -> None:
self.__s3_resource = boto3.resource(AWS_RESOURCE_S3) self.__s3_client = boto3.client(AWS_RESOURCE_S3)
self.__s3_bucket = self.__s3_resource.Bucket(bucket_name) self.__s3_bucket = bucket_name
def get_object(self, object_key: str) -> str: def get_object(self, object_key: str) -> str:
response = self.__s3_bucket.Object(object_key).get() response = self.__s3_client.get_object(Bucket=self.__s3_bucket, Key=object_key)
body = response[S3_RESPONSE_BODY].read() body = response[S3_RESPONSE_BODY].read()
return body.decode(S3_CHAR_CODE) return body.decode(S3_CHAR_CODE)
def put_object(self, object_key: str, local_file_path: str) -> None: def put_object(self, object_key: str, local_file_path: str) -> None:
self.__s3_bucket.upload_file(Key=object_key, Filename=local_file_path) self.__s3_client.upload_file(Filename=local_file_path, Bucket=self.__s3_bucket, Key=object_key)
return return
def copy(self, src_bucket: str, src_key: str, dest_bucket: str, dest_key: str) -> None: def copy(self, src_bucket: str, src_key: str, dest_bucket: str, dest_key: str) -> None:
copy_source = {'Bucket': src_bucket, 'Key': src_key} copy_source = {'Bucket': src_bucket, 'Key': src_key}
self.__s3_resource.meta.client.copy(copy_source, dest_bucket, dest_key) self.__s3_client.copy_object(CopySource=copy_source, Bucket=dest_bucket, Key=dest_key)
return return
class ConfigBucket: class ConfigBucket:
__s3_resource: S3Resource = None __s3_client: S3Client = None
def __init__(self) -> None: def __init__(self) -> None:
self.__s3_resource = S3Resource(CRM_CONFIG_BUCKET) self.__s3_client = S3Client(CRM_CONFIG_BUCKET)
def __str__(self) -> str: def __str__(self) -> str:
return CRM_CONFIG_BUCKET return CRM_CONFIG_BUCKET
def get_object_info_file(self) -> str: def get_object_info_file(self) -> str:
return self.__s3_resource.get_object(f'{OBJECT_INFO_FOLDER}/{OBJECT_INFO_FILENAME}') return self.__s3_client.get_object(f'{OBJECT_INFO_FOLDER}/{OBJECT_INFO_FILENAME}')
def get_last_fetch_datetime_file(self, file_key: str) -> str: def get_last_fetch_datetime_file(self, file_key: str) -> str:
return self.__s3_resource.get_object(f'{LAST_FETCH_DATE_FOLDER}/{file_key}') return self.__s3_client.get_object(f'{LAST_FETCH_DATE_FOLDER}/{file_key}')
def put_last_fetch_datetime_file(self, file_key: str, local_file_path: str) -> None: def put_last_fetch_datetime_file(self, file_key: str, local_file_path: str) -> None:
self.__s3_resource.put_object( self.__s3_client.put_object(
f'{LAST_FETCH_DATE_FOLDER}/{file_key}', local_file_path) f'{LAST_FETCH_DATE_FOLDER}/{file_key}', local_file_path)
return return
class DataBucket: class DataBucket:
__s3_resource: S3Resource = None __s3_client: S3Client = None
def __init__(self) -> None: def __init__(self) -> None:
self.__s3_resource = S3Resource(IMPORT_DATA_BUCKET) self.__s3_client = S3Client(IMPORT_DATA_BUCKET)
def __str__(self) -> str: def __str__(self) -> str:
return IMPORT_DATA_BUCKET return IMPORT_DATA_BUCKET
def put_csv(self, file_key: str, local_file_path: str) -> None: def put_csv(self, file_key: str, local_file_path: str) -> None:
object_key = f'{CRM_IMPORT_DATA_FOLDER}/{file_key}' object_key = f'{CRM_IMPORT_DATA_FOLDER}/{file_key}'
self.__s3_resource.put_object(object_key, local_file_path) self.__s3_client.put_object(object_key, local_file_path)
return return
def put_csv_from(self, src_bucket: str, src_key: str): def put_csv_from(self, src_bucket: str, src_key: str):
dest_filename = src_key.split('/')[-1] dest_filename = src_key.split('/')[-1]
self.__s3_resource.copy(src_bucket, src_key, str(self), f'{CRM_IMPORT_DATA_FOLDER}/{dest_filename}') self.__s3_client.copy(src_bucket, src_key, str(self), f'{CRM_IMPORT_DATA_FOLDER}/{dest_filename}')
return return
class BackupBucket: class BackupBucket:
__s3_resource: S3Resource = None __s3_client: S3Client = None
def __init__(self) -> None: def __init__(self) -> None:
self.__s3_resource = S3Resource(CRM_BACKUP_BUCKET) self.__s3_client = S3Client(CRM_BACKUP_BUCKET)
def __str__(self) -> str: def __str__(self) -> str:
return CRM_BACKUP_BUCKET return CRM_BACKUP_BUCKET
def put_response_json(self, file_key: str, local_file_path: str) -> None: def put_response_json(self, file_key: str, local_file_path: str) -> None:
object_key = f'{RESPONSE_JSON_BACKUP_FOLDER}/{file_key}' object_key = f'{RESPONSE_JSON_BACKUP_FOLDER}/{file_key}'
self.__s3_resource.put_object(object_key, local_file_path) self.__s3_client.put_object(object_key, local_file_path)
return return
def put_csv(self, file_key: str, local_file_path: str) -> None: def put_csv(self, file_key: str, local_file_path: str) -> None:
object_key = f'{CRM_IMPORT_DATA_BACKUP_FOLDER}/{file_key}' object_key = f'{CRM_IMPORT_DATA_BACKUP_FOLDER}/{file_key}'
self.__s3_resource.put_object(object_key, local_file_path) self.__s3_client.put_object(object_key, local_file_path)
return return
def put_result_json(self, file_key: str, local_file_path: str) -> None: def put_result_json(self, file_key: str, local_file_path: str) -> None:
object_key = f'{PROCESS_RESULT_FOLDER}/{file_key}' object_key = f'{PROCESS_RESULT_FOLDER}/{file_key}'
self.__s3_resource.put_object(object_key, local_file_path) self.__s3_client.put_object(object_key, local_file_path)
return return

View File

@ -1,7 +1,8 @@
import os import os
import pytest import pytest
from src.aws.s3 import BackupBucket, ConfigBucket, DataBucket, S3Resource
from src.aws.s3 import BackupBucket, ConfigBucket, DataBucket, S3Client
@pytest.fixture @pytest.fixture
@ -15,7 +16,7 @@ def s3_test(s3_client, bucket_name):
yield yield
class TestS3Resource: class TestS3Client:
def test_get_object(self, s3_test, s3_client, bucket_name): def test_get_object(self, s3_test, s3_client, bucket_name):
""" """
@ -31,7 +32,7 @@ class TestS3Resource:
s3_client.put_object(Bucket=bucket_name, Key='hogehoge/test.txt', Body=b'aaaaaaaaaaaaaaa') s3_client.put_object(Bucket=bucket_name, Key='hogehoge/test.txt', Body=b'aaaaaaaaaaaaaaa')
# Act # Act
sut = S3Resource(bucket_name) sut = S3Client(bucket_name)
actual = sut.get_object('hogehoge/test.txt') actual = sut.get_object('hogehoge/test.txt')
# Assert # Assert
@ -48,7 +49,7 @@ class TestS3Resource:
""" """
# Arrange # Arrange
# Act # Act
sut = S3Resource(bucket_name) sut = S3Client(bucket_name)
with pytest.raises(Exception): with pytest.raises(Exception):
# Assert # Assert
sut.get_object('hogehoge/test.txt') sut.get_object('hogehoge/test.txt')
@ -68,7 +69,7 @@ class TestS3Resource:
with open(file_path, mode='w') as f: with open(file_path, mode='w') as f:
f.write('aaaaaaaaaaaaaaa') f.write('aaaaaaaaaaaaaaa')
sut = S3Resource(bucket_name) sut = S3Client(bucket_name)
sut.put_object('hogehoge/test.txt', file_path) sut.put_object('hogehoge/test.txt', file_path)
actual = s3_client.get_object(Bucket=bucket_name, Key='hogehoge/test.txt') actual = s3_client.get_object(Bucket=bucket_name, Key='hogehoge/test.txt')
@ -87,7 +88,7 @@ class TestS3Resource:
""" """
# Arrange # Arrange
# Act # Act
sut = S3Resource(bucket_name) sut = S3Client(bucket_name)
with pytest.raises(Exception): with pytest.raises(Exception):
# Assert # Assert
sut.put_object('hogehoge/test.txt', 'aaaaaaaaaaaaaaa') sut.put_object('hogehoge/test.txt', 'aaaaaaaaaaaaaaa')
@ -108,7 +109,7 @@ class TestS3Resource:
s3_client.create_bucket(Bucket=for_copy_bucket) s3_client.create_bucket(Bucket=for_copy_bucket)
s3_client.put_object(Bucket=bucket_name, Key='hogehoge/test.txt', Body=b'aaaaaaaaaaaaaaa') s3_client.put_object(Bucket=bucket_name, Key='hogehoge/test.txt', Body=b'aaaaaaaaaaaaaaa')
sut = S3Resource(bucket_name) sut = S3Client(bucket_name)
sut.copy(bucket_name, 'hogehoge/test.txt', for_copy_bucket, 'test.txt') sut.copy(bucket_name, 'hogehoge/test.txt', for_copy_bucket, 'test.txt')
actual = s3_client.get_object(Bucket=for_copy_bucket, Key='test.txt') actual = s3_client.get_object(Bucket=for_copy_bucket, Key='test.txt')
@ -125,7 +126,7 @@ class TestS3Resource:
""" """
# Arrange # Arrange
# Act # Act
sut = S3Resource(bucket_name) sut = S3Client(bucket_name)
with pytest.raises(Exception): with pytest.raises(Exception):
# Assert # Assert
sut.copy(bucket_name, 'hogehoge/test.txt', 'for_copy_bucket', 'test.txt') sut.copy(bucket_name, 'hogehoge/test.txt', 'for_copy_bucket', 'test.txt')
@ -140,8 +141,8 @@ class TestS3Resource:
- インスタンス生成時に例外が発生すること - インスタンス生成時に例外が発生すること
""" """
with pytest.raises(Exception) as e: with pytest.raises(Exception) as e:
S3Resource() S3Client()
assert e.value.args[0] == "__init__() missing 1 required positional argument: 'bucket_name'" assert e.value.args[0] == "S3Client.__init__() missing 1 required positional argument: 'bucket_name'"
class TestConfigBucket: class TestConfigBucket:

View File

@ -4,8 +4,7 @@ from datetime import datetime
import boto3 import boto3
import pytest import pytest
from moto import mock_s3 from moto import mock_aws
from py.xml import html # type: ignore
from . import docstring_parser from . import docstring_parser
@ -21,7 +20,7 @@ def aws_credentials():
@pytest.fixture @pytest.fixture
def s3_client(aws_credentials): def s3_client(aws_credentials):
with mock_s3(): with mock_aws():
conn = boto3.client("s3", region_name="us-east-1") conn = boto3.client("s3", region_name="us-east-1")
yield conn yield conn
@ -35,18 +34,18 @@ def pytest_html_report_title(report):
def pytest_html_results_table_header(cells): def pytest_html_results_table_header(cells):
del cells[2:] del cells[2:]
cells.insert(3, html.th("Cases")) cells.insert(3, '<th>Cases</th>')
cells.insert(4, html.th("Arranges")) cells.insert(4, '<th>Arranges</th>')
cells.insert(5, html.th("Expects")) cells.insert(5, '<th>Expects</th>')
cells.append(html.th("Time", class_="sortable time", col="time")) cells.append('<th class="sortable time" col="time">Time</th>')
def pytest_html_results_table_row(report, cells): def pytest_html_results_table_row(report, cells):
del cells[2:] del cells[2:]
cells.insert(3, html.td(html.pre(report.cases))) # 「テスト内容」をレポートに出力 cells.insert(3, f'<td><pre>{report.cases}</pre></td>') # 「テスト内容」をレポートに出力
cells.insert(4, html.td(html.pre(report.arranges))) # 「期待結果」をレポートに出力 cells.insert(4, f'<td><pre>{report.arranges}</pre></td>') # 「期待結果」をレポートに出力
cells.insert(5, html.td(html.pre(report.expects))) # 「期待結果」をレポートに出力 cells.insert(5, f'<td><pre>{report.expects}</pre></td>') # 「期待結果」をレポートに出力
cells.append(html.td(datetime.now(), class_="col-time")) # ついでに「時間」もレポートに出力 cells.append(f'<td class="col-time">{datetime.now()}</td>') # ついでに「時間」もレポートに出力
@pytest.hookimpl(hookwrapper=True) @pytest.hookimpl(hookwrapper=True)

View File

@ -652,7 +652,8 @@ class TestSalesforceApiClient:
actual = sut.fetch_sf_data(soql) actual = sut.fetch_sf_data(soql)
assert len(actual) > 0 assert len(actual) > 0
assert dict(actual[0])["RelationshipTest__r"]["RecordType"]["DeveloperName"] == "RecordTypeSpecial" print(dict(actual[0]))
assert dict(actual[0])["RelationshipTest__r"]["RecordType"]["DeveloperName"] == "RecordTypeNormal"
def test_raise_create_instance_cause_auth_failed(self, monkeypatch): def test_raise_create_instance_cause_auth_failed(self, monkeypatch):
""" """

View File

@ -99,8 +99,9 @@ class TestCounterObject:
sut = CounterObject() sut = CounterObject()
sut.describe(1) sut.describe(1)
print(str(e.value))
# Expects # Expects
assert str(e.value) == 'describe() takes 1 positional argument but 2 were given' assert str(e.value) == 'CounterObject.describe() takes 1 positional argument but 2 were given'
def test_increment(self) -> int: def test_increment(self) -> int:
""" """

View File

@ -1,16 +1,19 @@
FROM python:3.9 FROM python:3.12-slim-bookworm
ENV TZ="Asia/Tokyo" ENV TZ="Asia/Tokyo"
# pythonの標準出力をバッファリングしないフラグ
ENV PYTHONUNBUFFERED=1
# pythonのバイトコードを生成しないフラグ
ENV PYTHONDONTWRITEBYTECODE=1
WORKDIR /usr/src/app WORKDIR /usr/src/app
COPY requirements.txt ./ COPY Pipfile Pipfile.lock ./
RUN \ RUN \
apt update -y && \ apt update -y && \
# パッケージのセキュリティアップデートのみを適用するコマンド pip install pipenv --no-cache-dir && \
apt install -y unattended-upgrades && \ pipenv install --system --deploy && \
unattended-upgrades && \ pip uninstall -y pipenv virtualenv-clone virtualenv
pip install --upgrade pip wheel setuptools && \
pip install --no-cache-dir -r requirements.txt
COPY dataimport ./ COPY dataimport ./
CMD [ "python", "./controller.py" ] CMD [ "python", "./controller.py" ]

13
ecs/dataimport/Pipfile Normal file
View File

@ -0,0 +1,13 @@
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"
[packages]
boto3 = "*"
pymysql = "*"
[dev-packages]
[requires]
python_version = "3.12"

87
ecs/dataimport/Pipfile.lock generated Normal file
View File

@ -0,0 +1,87 @@
{
"_meta": {
"hash": {
"sha256": "1738beec0de1a16f127d9bbeef1c9cb1ffb5b2377aa1aedbce9bfacae0fa1c67"
},
"pipfile-spec": 6,
"requires": {
"python_version": "3.12"
},
"sources": [
{
"name": "pypi",
"url": "https://pypi.org/simple",
"verify_ssl": true
}
]
},
"default": {
"boto3": {
"hashes": [
"sha256:3faa2c328a61745f3215a63039606a6fcf55d9afe1cc76e3a5e27b9db58cdbf6",
"sha256:b998edac72f6740bd5d9d585cf3880f2dfeb4842e626b34430fd0e9623378011"
],
"index": "pypi",
"markers": "python_version >= '3.9'",
"version": "==1.38.32"
},
"botocore": {
"hashes": [
"sha256:0899a090e352cb5eeaae2c7bb52a987b469d23912c7ece86664dfb5c2e074978",
"sha256:64ab919a5d8b74dd73eaac1f978d0e674d11ff3bbe8815c3d2982477be9a082c"
],
"markers": "python_version >= '3.9'",
"version": "==1.38.32"
},
"jmespath": {
"hashes": [
"sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980",
"sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe"
],
"markers": "python_version >= '3.7'",
"version": "==1.0.1"
},
"pymysql": {
"hashes": [
"sha256:4de15da4c61dc132f4fb9ab763063e693d521a80fd0e87943b9a453dd4c19d6c",
"sha256:e127611aaf2b417403c60bf4dc570124aeb4a57f5f37b8e95ae399a42f904cd0"
],
"index": "pypi",
"markers": "python_version >= '3.7'",
"version": "==1.1.1"
},
"python-dateutil": {
"hashes": [
"sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3",
"sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"
],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'",
"version": "==2.9.0.post0"
},
"s3transfer": {
"hashes": [
"sha256:0148ef34d6dd964d0d8cf4311b2b21c474693e57c2e069ec708ce043d2b527be",
"sha256:f5e6db74eb7776a37208001113ea7aa97695368242b364d73e91c981ac522177"
],
"markers": "python_version >= '3.9'",
"version": "==0.13.0"
},
"six": {
"hashes": [
"sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274",
"sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"
],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'",
"version": "==1.17.0"
},
"urllib3": {
"hashes": [
"sha256:414bc6535b787febd7567804cc015fee39daab8ad86268f1310a9250697de466",
"sha256:4e16665048960a0900c702d4a66415956a584919c03361cac9f1df5c5dd7e813"
],
"markers": "python_version >= '3.9'",
"version": "==2.4.0"
}
},
"develop": {}
}

View File

@ -4,7 +4,6 @@ import sys
from datetime import datetime from datetime import datetime
import boto3 import boto3
from common import convert_quotechar, debug_log from common import convert_quotechar, debug_log
from end import end from end import end
from error import error from error import error
@ -41,7 +40,7 @@ LINE_FEED_CODE = {
} }
# クラス変数 # クラス変数
s3_resource = boto3.resource('s3') s3_client = boto3.client('s3')
# チェック例外クラス # チェック例外クラス
@ -74,16 +73,14 @@ def check(bucket_name, target_data_source, target_file_name, settings_key, log_i
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-CHK-01 - チェック処理を開始します') print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-CHK-01 - チェック処理を開始します')
# データ読込 # データ読込
settings_obj = s3_resource.Object(bucket_name, settings_key) settings_obj_response = s3_client.get_object(Bucket=bucket_name, Key=settings_key)
settings_response = settings_obj.get()
settings_list = [] settings_list = []
for line in io.TextIOWrapper(io.BytesIO(settings_response["Body"].read()), encoding='utf-8'): for line in io.TextIOWrapper(io.BytesIO(settings_obj_response["Body"].read()), encoding='utf-8'):
settings_list.append(line.rstrip('\n')) settings_list.append(line.rstrip('\n'))
work_key = target_data_source + DIRECTORY_WORK + target_file_name work_key = target_data_source + DIRECTORY_WORK + target_file_name
work_obj = s3_resource.Object(bucket_name, work_key) work_obj_response = s3_client.get_object(Bucket=bucket_name, Key=work_key)
work_response = work_obj.get() work_data = io.TextIOWrapper(io.BytesIO(work_obj_response["Body"].read()), encoding=settings_list[SETTINGS_ITEM["charCode"]], newline=LINE_FEED_CODE[settings_list[SETTINGS_ITEM["lineFeedCode"]]])
work_data = io.TextIOWrapper(io.BytesIO(work_response["Body"].read()), encoding=settings_list[SETTINGS_ITEM["charCode"]], newline=LINE_FEED_CODE[settings_list[SETTINGS_ITEM["lineFeedCode"]]])
work_csv_row = [] work_csv_row = []
for i, line in enumerate(csv.reader(work_data, quotechar=convert_quotechar(settings_list[SETTINGS_ITEM["quotechar"]]), delimiter=settings_list[SETTINGS_ITEM["delimiter"]])): for i, line in enumerate(csv.reader(work_data, quotechar=convert_quotechar(settings_list[SETTINGS_ITEM["quotechar"]]), delimiter=settings_list[SETTINGS_ITEM["delimiter"]])):
# ヘッダあり、かつ、1行目の場合 # ヘッダあり、かつ、1行目の場合
@ -148,3 +145,16 @@ def is_empty_file(work_csv_row: list, settings_list: list):
return len(work_csv_row[1:]) == 0 return len(work_csv_row[1:]) == 0
return len(work_csv_row) == 0 return len(work_csv_row) == 0
# ローカル実行用コード
# 値はよしなに変えてください
# if __name__ == '__main__':
# check(
# bucket_name='バケット名',
# target_data_source='データソース名',
# target_file_name='targetフォルダ内のファイル名',
# settings_key='個別設定ファイル名',
# log_info='Info',
# mode='i'
# )

View File

@ -1,7 +1,8 @@
from datetime import datetime from datetime import datetime
import boto3 import boto3
from error import error
from common import debug_log from common import debug_log
from error import error
# 定数 # 定数
LOG_LEVEL = {'i': 'Info', 'e': 'Error'} LOG_LEVEL = {'i': 'Info', 'e': 'Error'}
@ -12,7 +13,6 @@ DIRECTORY_WARNING = '/warning/'
# クラス変数 # クラス変数
s3_client = boto3.client('s3') s3_client = boto3.client('s3')
s3_resource = boto3.resource('s3')
def end(bucket_name, target_data_source, target_file_name, warning_info, log_info, mode): def end(bucket_name, target_data_source, target_file_name, warning_info, log_info, mode):
@ -45,8 +45,7 @@ def end(bucket_name, target_data_source, target_file_name, warning_info, log_inf
} }
done_file_name = f'{datetime.now():%Y%m%d%H%M%S}_{target_file_name}' done_file_name = f'{datetime.now():%Y%m%d%H%M%S}_{target_file_name}'
done_key = target_data_source + DIRECTORY_DONE + done_file_name done_key = target_data_source + DIRECTORY_DONE + done_file_name
done_obj = s3_resource.Object(bucket_name, done_key) s3_client.copy(CopySource=copy_source, Bucket=bucket_name, Key=done_key)
done_obj.copy(copy_source)
s3_client.delete_object(Bucket=bucket_name, Key=work_key) s3_client.delete_object(Bucket=bucket_name, Key=work_key)
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-END-02 - workディレクトリの {target_file_name} をdoneディレクトリに移動しました 移動後ファイル名:{done_file_name}') print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-END-02 - workディレクトリの {target_file_name} をdoneディレクトリに移動しました 移動後ファイル名:{done_file_name}')
@ -64,23 +63,20 @@ def end(bucket_name, target_data_source, target_file_name, warning_info, log_inf
# warningファイルの作成 # warningファイルの作成
warning_file_name = f'{datetime.now():%Y%m%d%H%M%S}_{target_file_name}_war.log' warning_file_name = f'{datetime.now():%Y%m%d%H%M%S}_{target_file_name}_war.log'
warning_key = target_data_source + DIRECTORY_WARNING + warning_file_name warning_key = target_data_source + DIRECTORY_WARNING + warning_file_name
warning_obj = s3_resource.Object(bucket_name, warning_key) s3_client.put_object(Bucket=bucket_name, Key=warning_key, Body=bytes(warning_info, 'utf-8'))
warning_obj.put(Body=warning_info)
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-END-06 - warningディレクトリに {warning_file_name} を作成しました') print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-END-06 - warningディレクトリに {warning_file_name} を作成しました')
# warning処理結果ファイルの作成 # warning処理結果ファイルの作成
result_warning_file_name = target_file_name + '.warning' result_warning_file_name = target_file_name + '.warning'
result_warning_key = target_data_source + DIRECTORY_TARGET + result_warning_file_name result_warning_key = target_data_source + DIRECTORY_TARGET + result_warning_file_name
result_warning_obj = s3_resource.Object(bucket_name, result_warning_key) s3_client.put_object(Bucket=bucket_name, Key=result_warning_key, Body=b'')
result_warning_obj.put(Body='')
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-END-07 - targetディレクトリに {result_warning_file_name} を作成しました') print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-END-07 - targetディレクトリに {result_warning_file_name} を作成しました')
else: else:
# done処理結果ファイルの作成 # done処理結果ファイルの作成
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-END-08 - Warning情報は存在しませんでした') print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-END-08 - Warning情報は存在しませんでした')
result_done_file_name = target_file_name + '.done' result_done_file_name = target_file_name + '.done'
result_done_key = target_data_source + DIRECTORY_TARGET + result_done_file_name result_done_key = target_data_source + DIRECTORY_TARGET + result_done_file_name
result_done_obj = s3_resource.Object(bucket_name, result_done_key) s3_client.put_object(Bucket=bucket_name, Key=result_done_key, Body=b'')
result_done_obj.put(Body='')
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-END-09 - targetディレクトリに {result_done_file_name} を作成しました') print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-END-09 - targetディレクトリに {result_done_file_name} を作成しました')
# ⑤ 終了処理終了ログを出力する # ⑤ 終了処理終了ログを出力する
@ -88,3 +84,17 @@ def end(bucket_name, target_data_source, target_file_name, warning_info, log_inf
except Exception as e: except Exception as e:
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["e"]} E-END-99 - エラー内容:{e}') print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["e"]} E-END-99 - エラー内容:{e}')
error(bucket_name, target_data_source, target_file_name, log_info) error(bucket_name, target_data_source, target_file_name, log_info)
# ローカル実行用コード
# 値はよしなに変えてください
# if __name__ == '__main__':
# end(
# bucket_name='バケット名',
# target_data_source='データソース名',
# target_file_name='targetフォルダ内のファイル',
# # warning_info='ワーニング内容', # ワーニングがある場合のテストはこちらを生かす
# warning_info='',
# log_info='Info',
# mode='i'
# )

View File

@ -1,6 +1,7 @@
from datetime import datetime
import boto3
import sys import sys
from datetime import datetime
import boto3
# 定数 # 定数
LOG_LEVEL = {'i': 'Info', 'e': 'Error'} LOG_LEVEL = {'i': 'Info', 'e': 'Error'}
@ -10,7 +11,6 @@ DIRECTORY_ERROR = '/error/'
# クラス変数 # クラス変数
s3_client = boto3.client('s3') s3_client = boto3.client('s3')
s3_resource = boto3.resource('s3')
def error(bucket_name, target_data_source, target_file_name, log_info): def error(bucket_name, target_data_source, target_file_name, log_info):
@ -34,8 +34,7 @@ def error(bucket_name, target_data_source, target_file_name, log_info):
} }
error_file_name = f'{datetime.now():%Y%m%d%H%M%S}_{target_file_name}' error_file_name = f'{datetime.now():%Y%m%d%H%M%S}_{target_file_name}'
error_key = target_data_source + DIRECTORY_ERROR + error_file_name error_key = target_data_source + DIRECTORY_ERROR + error_file_name
error_obj = s3_resource.Object(bucket_name, error_key) s3_client.copy(CopySource=copy_source, Bucket=bucket_name, Key=error_key)
error_obj.copy(copy_source)
s3_client.delete_object(Bucket=bucket_name, Key=work_key) s3_client.delete_object(Bucket=bucket_name, Key=work_key)
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-ERR-02 - workディレクトリの {target_file_name} をerrorディレクトリに移動しました 移動後ファイル名:{error_file_name}') print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-ERR-02 - workディレクトリの {target_file_name} をerrorディレクトリに移動しました 移動後ファイル名:{error_file_name}')
@ -48,8 +47,7 @@ def error(bucket_name, target_data_source, target_file_name, log_info):
# ④ S3バケット内のtargetディレクトリに、「投入データファイル名.error」ファイルを作成する # ④ S3バケット内のtargetディレクトリに、「投入データファイル名.error」ファイルを作成する
result_error_file_name = target_file_name + '.error' result_error_file_name = target_file_name + '.error'
result_error_key = target_data_source + DIRECTORY_TARGET + result_error_file_name result_error_key = target_data_source + DIRECTORY_TARGET + result_error_file_name
result_error_obj = s3_resource.Object(bucket_name, result_error_key) s3_client.put_object(Bucket=bucket_name, Key=result_error_key, Body=b'')
result_error_obj.put(Body='')
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-ERR-04 - targetディレクトリに {result_error_file_name} を作成しました') print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-ERR-04 - targetディレクトリに {result_error_file_name} を作成しました')
except Exception as e: except Exception as e:
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["e"]} E-ERR-99 - エラー内容:{e}') print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["e"]} E-ERR-99 - エラー内容:{e}')
@ -81,16 +79,14 @@ def error_doing_file_exists(bucket_name, target_key, target_data_source, target_
} }
error_file_name = f'{datetime.now():%Y%m%d%H%M%S}_{target_file_name}' error_file_name = f'{datetime.now():%Y%m%d%H%M%S}_{target_file_name}'
error_key = target_data_source + DIRECTORY_ERROR + error_file_name error_key = target_data_source + DIRECTORY_ERROR + error_file_name
error_obj = s3_resource.Object(bucket_name, error_key) s3_client.copy(CopySource=copy_source, Bucket=bucket_name, Key=error_key)
error_obj.copy(copy_source)
s3_client.delete_object(Bucket=bucket_name, Key=target_key) s3_client.delete_object(Bucket=bucket_name, Key=target_key)
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-ERR-07 - targetディレクトリの {target_file_name} をerrorディレクトリに移動しました 移動後ファイル名:{error_file_name}') print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-ERR-07 - targetディレクトリの {target_file_name} をerrorディレクトリに移動しました 移動後ファイル名:{error_file_name}')
# ③ S3バケット内のtargetディレクトリに、「投入データファイル名.exclusive_error」ファイルを作成する # ③ S3バケット内のtargetディレクトリに、「投入データファイル名.exclusive_error」ファイルを作成する
result_error_file_name = target_file_name + '.exclusive_error' result_error_file_name = target_file_name + '.exclusive_error'
result_error_key = target_data_source + DIRECTORY_TARGET + result_error_file_name result_error_key = target_data_source + DIRECTORY_TARGET + result_error_file_name
result_error_obj = s3_resource.Object(bucket_name, result_error_key) s3_client.put_object(Bucket=bucket_name, Key=result_error_key, Body=b'')
result_error_obj.put(Body='')
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-ERR-08 - targetディレクトリに {result_error_file_name} を作成しました') print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-ERR-08 - targetディレクトリに {result_error_file_name} を作成しました')
except Exception as e: except Exception as e:
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["e"]} E-ERR-99 - エラー内容:{e}') print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["e"]} E-ERR-99 - エラー内容:{e}')
@ -99,4 +95,25 @@ def error_doing_file_exists(bucket_name, target_key, target_data_source, target_
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-ERR-09 - doingファイルが存在した時のエラー処理を終了します') print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-ERR-09 - doingファイルが存在した時のエラー処理を終了します')
# ⑤ 処理を終了する # ⑤ 処理を終了する
sys.exit() sys.exit()
# ローカル実行用コード
# 値はよしなに変えてください
# if __name__ == '__main__':
# エラー処理
# error(
# bucket_name='バケット名',
# target_data_source='データソース名',
# target_file_name='データソース名/target/ファイル名',
# log_info='Info'
# )
# doingファイルの有無チェック関数
# error_doing_file_exists(
# bucket_name='バケット名',
# target_key='投入データのフルパス',
# target_data_source='投入データのディレクトリ名よりデータソースに該当する部分',
# target_file_name='投入データのファイル名',
# log_info='Info'
# )

View File

@ -1,12 +1,12 @@
from datetime import datetime
import boto3
import io
import csv import csv
import io
import re import re
import sys import sys
from error import error from datetime import datetime
from error import error_doing_file_exists
import boto3
from common import debug_log from common import debug_log
from error import error, error_doing_file_exists
# 定数 # 定数
LOG_LEVEL = {"i": 'Info', "e": 'Error'} LOG_LEVEL = {"i": 'Info', "e": 'Error'}
@ -17,7 +17,6 @@ DIRECTORY_SETTINGS = '/settings/'
# クラス変数 # クラス変数
s3_client = boto3.client('s3') s3_client = boto3.client('s3')
s3_resource = boto3.resource('s3')
def init(bucket_name, target_key, target_data_source, target_file_name, log_info, mode): def init(bucket_name, target_key, target_data_source, target_file_name, log_info, mode):
@ -60,8 +59,7 @@ def init(bucket_name, target_key, target_data_source, target_file_name, log_info
try: try:
# ③ S3バケット内のtargetディレクトリに、「投入データファイル名.doing」ファイルを作成する # ③ S3バケット内のtargetディレクトリに、「投入データファイル名.doing」ファイルを作成する
doing_obj = s3_resource.Object(bucket_name, doing_key) s3_client.put_object(Bucket=bucket_name, Key=doing_key, Body=b'')
doing_obj.put(Body='')
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-INI-04 - targetディレクトリに {doing_file_name} を作成しました') print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-INI-04 - targetディレクトリに {doing_file_name} を作成しました')
# ④ 投入データファイルをS3バケット内のtargetディレクトリから、workディレクトリに移動(コピー削除)する # ④ 投入データファイルをS3バケット内のtargetディレクトリから、workディレクトリに移動(コピー削除)する
@ -70,8 +68,7 @@ def init(bucket_name, target_key, target_data_source, target_file_name, log_info
'Key': target_key 'Key': target_key
} }
work_key = target_data_source + DIRECTORY_WORK + target_file_name work_key = target_data_source + DIRECTORY_WORK + target_file_name
work_obj = s3_resource.Object(bucket_name, work_key) s3_client.copy(CopySource=copy_source, Bucket=bucket_name, Key=work_key)
work_obj.copy(copy_source)
s3_client.delete_object(Bucket=bucket_name, Key=target_key) s3_client.delete_object(Bucket=bucket_name, Key=target_key)
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-INI-05 - 投入データ {target_file_name} をworkディレクトリに移動しました') print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-INI-05 - 投入データ {target_file_name} をworkディレクトリに移動しました')
except Exception as e: except Exception as e:
@ -122,9 +119,8 @@ def init(bucket_name, target_key, target_data_source, target_file_name, log_info
try: try:
# ⑦ 個別設定ファイルを特定する # ⑦ 個別設定ファイルを特定する
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-INI-17 - 個別設定ファイルを検索します') print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-INI-17 - 個別設定ファイルを検索します')
mapping_obj = s3_resource.Object(bucket_name, mapping_key) mapping_obj_response = s3_client.get_object(Bucket=bucket_name, Key=mapping_key)
mapping_response = mapping_obj.get() mapping_body = io.TextIOWrapper(io.BytesIO(mapping_obj_response["Body"].read()), encoding='utf-8')
mapping_body = io.TextIOWrapper(io.BytesIO(mapping_response["Body"].read()), encoding='utf-8')
settings_file_name = '' settings_file_name = ''
for row in csv.reader(mapping_body, delimiter='\t'): for row in csv.reader(mapping_body, delimiter='\t'):
if row: if row:
@ -159,3 +155,15 @@ def init(bucket_name, target_key, target_data_source, target_file_name, log_info
except Exception as e: except Exception as e:
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["e"]} E-INI-99 - エラー内容:{e}') print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["e"]} E-INI-99 - エラー内容:{e}')
error(bucket_name, target_data_source, target_file_name, log_info) error(bucket_name, target_data_source, target_file_name, log_info)
# ローカル実行用コード
# 値はよしなに変えてください
# if __name__ == '__main__':
# init(
# bucket_name='バケット名',
# target_key='データソース名/target/ファイル名',
# target_data_source='データソース名',
# target_file_name='ファイル名',
# log_info='Info',
# mode='i'
# )

View File

@ -5,10 +5,9 @@ from datetime import datetime
import boto3 import boto3
import pymysql import pymysql
from pymysql.constants import CLIENT
from common import convert_quotechar, debug_log from common import convert_quotechar, debug_log
from error import error from error import error
from pymysql.constants import CLIENT
# 定数 # 定数
DIRECTORY_WORK = '/work/' DIRECTORY_WORK = '/work/'
@ -47,7 +46,6 @@ INVALID_CONFIG_EXCEPTION_MESSAGE = f'個別設定ファイルのインポート
# クラス変数 # クラス変数
s3_client = boto3.client('s3') s3_client = boto3.client('s3')
s3_resource = boto3.resource('s3')
def main(bucket_name, target_data_source, target_file_name, settings_key, db_info, log_info, mode): def main(bucket_name, target_data_source, target_file_name, settings_key, db_info, log_info, mode):
@ -91,8 +89,7 @@ def main(bucket_name, target_data_source, target_file_name, settings_key, db_inf
# ④ 個別設定ファイルのロードスキーマのテーブル名に記載されているテーブルをTRUNCATEする # ④ 個別設定ファイルのロードスキーマのテーブル名に記載されているテーブルをTRUNCATEする
# 個別設定ファイルの読み込み # 個別設定ファイルの読み込み
settings_obj = s3_resource.Object(bucket_name, settings_key) settings_response = s3_client.get_object(Bucket=bucket_name, Key=settings_key)
settings_response = settings_obj.get()
settings_list = [] settings_list = []
for line in io.TextIOWrapper(io.BytesIO(settings_response["Body"].read()), encoding='utf-8'): for line in io.TextIOWrapper(io.BytesIO(settings_response["Body"].read()), encoding='utf-8'):
settings_list.append(line.rstrip('\n')) settings_list.append(line.rstrip('\n'))
@ -110,8 +107,7 @@ def main(bucket_name, target_data_source, target_file_name, settings_key, db_inf
# ⑤ 投入データファイルを1行ごとにループする # ⑤ 投入データファイルを1行ごとにループする
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-MAIN-05 - 投入データ {target_file_name} の読み込みを開始します') print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-MAIN-05 - 投入データ {target_file_name} の読み込みを開始します')
work_key = target_data_source + DIRECTORY_WORK + target_file_name work_key = target_data_source + DIRECTORY_WORK + target_file_name
work_obj = s3_resource.Object(bucket_name, work_key) work_response = s3_client.get_object(Bucket=bucket_name, Key=work_key)
work_response = work_obj.get()
work_data = io.TextIOWrapper(io.BytesIO(work_response["Body"].read()), encoding=settings_list[SETTINGS_ITEM["charCode"]], newline=LINE_FEED_CODE[settings_list[SETTINGS_ITEM["lineFeedCode"]]]) work_data = io.TextIOWrapper(io.BytesIO(work_response["Body"].read()), encoding=settings_list[SETTINGS_ITEM["charCode"]], newline=LINE_FEED_CODE[settings_list[SETTINGS_ITEM["lineFeedCode"]]])
process_count = 0 # 処理件数カウンタ process_count = 0 # 処理件数カウンタ
@ -261,10 +257,9 @@ def main(bucket_name, target_data_source, target_file_name, settings_key, db_inf
try: try:
if ex_sql_file_exists: if ex_sql_file_exists:
# 拡張SQLファイルからSQL文生成 # 拡張SQLファイルからSQL文生成
ex_sqls_obj = s3_resource.Object(bucket_name, ex_sql_key) ex_sql_obj_response = s3_client.get_object(Bucket=bucket_name, Key=ex_sql_key)
ex_sql_response = ex_sqls_obj.get()
ex_sql = '' ex_sql = ''
for line in io.TextIOWrapper(io.BytesIO(ex_sql_response["Body"].read()), encoding='utf-8'): for line in io.TextIOWrapper(io.BytesIO(ex_sql_obj_response["Body"].read()), encoding='utf-8'):
ex_sql = f'{ex_sql} {line.rstrip()}' ex_sql = f'{ex_sql} {line.rstrip()}'
# トランザクション開始 # トランザクション開始
@ -358,3 +353,18 @@ def truncate_judge(settings_list):
class InvalidConfigException(Exception): class InvalidConfigException(Exception):
pass pass
# ローカル実行用コード
# 値はよしなに変えてください
# if __name__ == '__main__':
# DB_INFO = {"host": '127.0.0.1', "name": 'org02', "pass": 'user', "user": 'user'}
# main(
# bucket_name='バケット名',
# target_data_source='投入データのディレクトリ名よりデータソースに該当する部分',
# target_file_name='投入データのファイル名',
# settings_key='投入データに該当する個別設定ファイルのフルパス',
# db_info=DB_INFO,
# log_info='info',
# mode='i'
# )

View File

@ -1,2 +0,0 @@
boto3
PyMySQL

View File

@ -1,6 +1,10 @@
FROM python:3.9 FROM python:3.12-slim-bookworm
ENV TZ="Asia/Tokyo" ENV TZ="Asia/Tokyo"
# pythonの標準出力をバッファリングしないフラグ
ENV PYTHONUNBUFFERED=1
# pythonのバイトコードを生成しないフラグ
ENV PYTHONDONTWRITEBYTECODE=1
WORKDIR /usr/src/app WORKDIR /usr/src/app
COPY Pipfile Pipfile.lock ./ COPY Pipfile Pipfile.lock ./
@ -12,6 +16,7 @@ RUN apt update && apt install -y less vim curl wget gzip unzip sudo lsb-release
# mysqlをインストール # mysqlをインストール
RUN \ RUN \
wget https://dev.mysql.com/get/mysql-apt-config_0.8.29-1_all.deb && \ wget https://dev.mysql.com/get/mysql-apt-config_0.8.29-1_all.deb && \
apt install -y gnupg && \
dpkg -i mysql-apt-config_0.8.29-1_all.deb < mysql_dpkg_selection.txt && \ dpkg -i mysql-apt-config_0.8.29-1_all.deb < mysql_dpkg_selection.txt && \
apt update && \ apt update && \
apt install -y mysql-client apt install -y mysql-client
@ -29,11 +34,6 @@ RUN \
pipenv install --system --deploy && \ pipenv install --system --deploy && \
pip uninstall -y pipenv virtualenv-clone virtualenv pip uninstall -y pipenv virtualenv-clone virtualenv
# パッケージのセキュリティアップデートのみを適用するコマンドを実行
RUN \
apt install -y unattended-upgrades && \
unattended-upgrades
COPY src ./src COPY src ./src
COPY entrypoint.py entrypoint.py COPY entrypoint.py entrypoint.py

View File

@ -10,7 +10,7 @@ autopep8 = "*"
flake8 = "*" flake8 = "*"
[requires] [requires]
python_version = "3.9" python_version = "3.12"
[pipenv] [pipenv]
allow_prereleases = true allow_prereleases = true

View File

@ -1,11 +1,11 @@
{ {
"_meta": { "_meta": {
"hash": { "hash": {
"sha256": "cc5f54bfb2073051a26f113ceac64e12fdd0bf8faa36f1a42210cc9c921c134b" "sha256": "2f7808325e11704ced6ad10c85e1d583663a03d7ccabaa9696ab1fe133a6b30c"
}, },
"pipfile-spec": 6, "pipfile-spec": 6,
"requires": { "requires": {
"python_version": "3.9" "python_version": "3.12"
}, },
"sources": [ "sources": [
{ {
@ -19,21 +19,21 @@
"develop": { "develop": {
"autopep8": { "autopep8": {
"hashes": [ "hashes": [
"sha256:1fa8964e4618929488f4ec36795c7ff12924a68b8bf01366c094fc52f770b6e7", "sha256:89440a4f969197b69a995e4ce0661b031f455a9f776d2c5ba3dbd83466931758",
"sha256:2bb76888c5edbcafe6aabab3c47ba534f5a2c2d245c2eddced4a30c4b4946357" "sha256:ce8ad498672c845a0c3de2629c15b635ec2b05ef8177a6e7c91c74f3e9b51128"
], ],
"index": "pypi", "index": "pypi",
"markers": "python_version >= '3.8'", "markers": "python_version >= '3.9'",
"version": "==2.1.0" "version": "==2.3.2"
}, },
"flake8": { "flake8": {
"hashes": [ "hashes": [
"sha256:33f96621059e65eec474169085dc92bf26e7b2d47366b70be2f67ab80dc25132", "sha256:1cbc62e65536f65e6d754dfe6f1bada7f5cf392d6f5db3c2b85892466c3e7c1a",
"sha256:a6dfbb75e03252917f2473ea9653f7cd799c3064e54d4c8140044c5c065f53c3" "sha256:c586ffd0b41540951ae41af572e6790dbd49fc12b3aa2541685d253d9bd504bd"
], ],
"index": "pypi", "index": "pypi",
"markers": "python_full_version >= '3.8.1'", "markers": "python_full_version >= '3.8.1'",
"version": "==7.0.0" "version": "==7.1.2"
}, },
"mccabe": { "mccabe": {
"hashes": [ "hashes": [
@ -45,11 +45,11 @@
}, },
"pycodestyle": { "pycodestyle": {
"hashes": [ "hashes": [
"sha256:41ba0e7afc9752dfb53ced5489e89f8186be00e599e712660695b7a75ff2663f", "sha256:46f0fb92069a7c28ab7bb558f05bfc0110dac69a0cd23c61ea0040283a9d78b3",
"sha256:44fe31000b2d866f2e41841b18528a505fbd7fef9017b04eff4e2648a0fadc67" "sha256:6838eae08bbce4f6accd5d5572075c63626a15ee3e6f842df996bf62f6d73521"
], ],
"markers": "python_version >= '3.8'", "markers": "python_version >= '3.8'",
"version": "==2.11.1" "version": "==2.12.1"
}, },
"pyflakes": { "pyflakes": {
"hashes": [ "hashes": [
@ -58,14 +58,6 @@
], ],
"markers": "python_version >= '3.8'", "markers": "python_version >= '3.8'",
"version": "==3.2.0" "version": "==3.2.0"
},
"tomli": {
"hashes": [
"sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc",
"sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"
],
"markers": "python_version < '3.11'",
"version": "==2.0.1"
} }
} }
} }

View File

@ -18,84 +18,20 @@
"default": { "default": {
"boto3": { "boto3": {
"hashes": [ "hashes": [
"sha256:b633e8fbf7145bdb995ce68a27d096bb89fd393185b0e773418d81cd78db5a03", "sha256:3faa2c328a61745f3215a63039606a6fcf55d9afe1cc76e3a5e27b9db58cdbf6",
"sha256:f2c11635be0de7b7c06eb606ece1add125e02d6ed521592294a0a21af09af135" "sha256:b998edac72f6740bd5d9d585cf3880f2dfeb4842e626b34430fd0e9623378011"
], ],
"index": "pypi", "index": "pypi",
"markers": "python_version >= '3.8'", "markers": "python_version >= '3.9'",
"version": "==1.34.105" "version": "==1.38.32"
}, },
"botocore": { "botocore": {
"hashes": [ "hashes": [
"sha256:727d5d3e800ac8b705fca6e19b6fefa1e728a81d62a712df9bd32ed0117c740b", "sha256:0899a090e352cb5eeaae2c7bb52a987b469d23912c7ece86664dfb5c2e074978",
"sha256:a459d060b541beecb50681e6e8a39313cca981e146a59ba7c5229d62f631a016" "sha256:64ab919a5d8b74dd73eaac1f978d0e674d11ff3bbe8815c3d2982477be9a082c"
], ],
"markers": "python_version >= '3.8'", "markers": "python_version >= '3.9'",
"version": "==1.34.105" "version": "==1.38.32"
},
"greenlet": {
"hashes": [
"sha256:01bc7ea167cf943b4c802068e178bbf70ae2e8c080467070d01bfa02f337ee67",
"sha256:0448abc479fab28b00cb472d278828b3ccca164531daab4e970a0458786055d6",
"sha256:086152f8fbc5955df88382e8a75984e2bb1c892ad2e3c80a2508954e52295257",
"sha256:098d86f528c855ead3479afe84b49242e174ed262456c342d70fc7f972bc13c4",
"sha256:149e94a2dd82d19838fe4b2259f1b6b9957d5ba1b25640d2380bea9c5df37676",
"sha256:1551a8195c0d4a68fac7a4325efac0d541b48def35feb49d803674ac32582f61",
"sha256:15d79dd26056573940fcb8c7413d84118086f2ec1a8acdfa854631084393efcc",
"sha256:1996cb9306c8595335bb157d133daf5cf9f693ef413e7673cb07e3e5871379ca",
"sha256:1a7191e42732df52cb5f39d3527217e7ab73cae2cb3694d241e18f53d84ea9a7",
"sha256:1ea188d4f49089fc6fb283845ab18a2518d279c7cd9da1065d7a84e991748728",
"sha256:1f672519db1796ca0d8753f9e78ec02355e862d0998193038c7073045899f305",
"sha256:2516a9957eed41dd8f1ec0c604f1cdc86758b587d964668b5b196a9db5bfcde6",
"sha256:2797aa5aedac23af156bbb5a6aa2cd3427ada2972c828244eb7d1b9255846379",
"sha256:2dd6e660effd852586b6a8478a1d244b8dc90ab5b1321751d2ea15deb49ed414",
"sha256:3ddc0f794e6ad661e321caa8d2f0a55ce01213c74722587256fb6566049a8b04",
"sha256:3ed7fb269f15dc662787f4119ec300ad0702fa1b19d2135a37c2c4de6fadfd4a",
"sha256:419b386f84949bf0e7c73e6032e3457b82a787c1ab4a0e43732898a761cc9dbf",
"sha256:43374442353259554ce33599da8b692d5aa96f8976d567d4badf263371fbe491",
"sha256:52f59dd9c96ad2fc0d5724107444f76eb20aaccb675bf825df6435acb7703559",
"sha256:57e8974f23e47dac22b83436bdcf23080ade568ce77df33159e019d161ce1d1e",
"sha256:5b51e85cb5ceda94e79d019ed36b35386e8c37d22f07d6a751cb659b180d5274",
"sha256:649dde7de1a5eceb258f9cb00bdf50e978c9db1b996964cd80703614c86495eb",
"sha256:64d7675ad83578e3fc149b617a444fab8efdafc9385471f868eb5ff83e446b8b",
"sha256:68834da854554926fbedd38c76e60c4a2e3198c6fbed520b106a8986445caaf9",
"sha256:6b66c9c1e7ccabad3a7d037b2bcb740122a7b17a53734b7d72a344ce39882a1b",
"sha256:70fb482fdf2c707765ab5f0b6655e9cfcf3780d8d87355a063547b41177599be",
"sha256:7170375bcc99f1a2fbd9c306f5be8764eaf3ac6b5cb968862cad4c7057756506",
"sha256:73a411ef564e0e097dbe7e866bb2dda0f027e072b04da387282b02c308807405",
"sha256:77457465d89b8263bca14759d7c1684df840b6811b2499838cc5b040a8b5b113",
"sha256:7f362975f2d179f9e26928c5b517524e89dd48530a0202570d55ad6ca5d8a56f",
"sha256:81bb9c6d52e8321f09c3d165b2a78c680506d9af285bfccbad9fb7ad5a5da3e5",
"sha256:881b7db1ebff4ba09aaaeae6aa491daeb226c8150fc20e836ad00041bcb11230",
"sha256:894393ce10ceac937e56ec00bb71c4c2f8209ad516e96033e4b3b1de270e200d",
"sha256:99bf650dc5d69546e076f413a87481ee1d2d09aaaaaca058c9251b6d8c14783f",
"sha256:9da2bd29ed9e4f15955dd1595ad7bc9320308a3b766ef7f837e23ad4b4aac31a",
"sha256:afaff6cf5200befd5cec055b07d1c0a5a06c040fe5ad148abcd11ba6ab9b114e",
"sha256:b1b5667cced97081bf57b8fa1d6bfca67814b0afd38208d52538316e9422fc61",
"sha256:b37eef18ea55f2ffd8f00ff8fe7c8d3818abd3e25fb73fae2ca3b672e333a7a6",
"sha256:b542be2440edc2d48547b5923c408cbe0fc94afb9f18741faa6ae970dbcb9b6d",
"sha256:b7dcbe92cc99f08c8dd11f930de4d99ef756c3591a5377d1d9cd7dd5e896da71",
"sha256:b7f009caad047246ed379e1c4dbcb8b020f0a390667ea74d2387be2998f58a22",
"sha256:bba5387a6975598857d86de9eac14210a49d554a77eb8261cc68b7d082f78ce2",
"sha256:c5e1536de2aad7bf62e27baf79225d0d64360d4168cf2e6becb91baf1ed074f3",
"sha256:c5ee858cfe08f34712f548c3c363e807e7186f03ad7a5039ebadb29e8c6be067",
"sha256:c9db1c18f0eaad2f804728c67d6c610778456e3e1cc4ab4bbd5eeb8e6053c6fc",
"sha256:d353cadd6083fdb056bb46ed07e4340b0869c305c8ca54ef9da3421acbdf6881",
"sha256:d46677c85c5ba00a9cb6f7a00b2bfa6f812192d2c9f7d9c4f6a55b60216712f3",
"sha256:d4d1ac74f5c0c0524e4a24335350edad7e5f03b9532da7ea4d3c54d527784f2e",
"sha256:d73a9fe764d77f87f8ec26a0c85144d6a951a6c438dfe50487df5595c6373eac",
"sha256:da70d4d51c8b306bb7a031d5cff6cc25ad253affe89b70352af5f1cb68e74b53",
"sha256:daf3cb43b7cf2ba96d614252ce1684c1bccee6b2183a01328c98d36fcd7d5cb0",
"sha256:dca1e2f3ca00b84a396bc1bce13dd21f680f035314d2379c4160c98153b2059b",
"sha256:dd4f49ae60e10adbc94b45c0b5e6a179acc1736cf7a90160b404076ee283cf83",
"sha256:e1f145462f1fa6e4a4ae3c0f782e580ce44d57c8f2c7aae1b6fa88c0b2efdb41",
"sha256:e3391d1e16e2a5a1507d83e4a8b100f4ee626e8eca43cf2cadb543de69827c4c",
"sha256:fcd2469d6a2cf298f198f0487e0a5b1a47a42ca0fa4dfd1b6862c999f018ebbf",
"sha256:fd096eb7ffef17c456cfa587523c5f92321ae02427ff955bebe9e3c63bc9f0da",
"sha256:fe754d231288e1e64323cfad462fcee8f0288654c10bdf4f603a39ed923bef33"
],
"markers": "platform_machine == 'aarch64' or (platform_machine == 'ppc64le' or (platform_machine == 'x86_64' or (platform_machine == 'amd64' or (platform_machine == 'AMD64' or (platform_machine == 'win32' or platform_machine == 'WIN32')))))",
"version": "==3.0.3"
}, },
"jmespath": { "jmespath": {
"hashes": [ "hashes": [
@ -107,223 +43,241 @@
}, },
"pymysql": { "pymysql": {
"hashes": [ "hashes": [
"sha256:4f13a7df8bf36a51e81dd9f3605fede45a4878fe02f9236349fd82a3f0612f96", "sha256:4de15da4c61dc132f4fb9ab763063e693d521a80fd0e87943b9a453dd4c19d6c",
"sha256:8969ec6d763c856f7073c4c64662882675702efcb114b4bcbb955aea3a069fa7" "sha256:e127611aaf2b417403c60bf4dc570124aeb4a57f5f37b8e95ae399a42f904cd0"
], ],
"index": "pypi", "index": "pypi",
"markers": "python_version >= '3.7'", "markers": "python_version >= '3.7'",
"version": "==1.1.0" "version": "==1.1.1"
}, },
"python-dateutil": { "python-dateutil": {
"hashes": [ "hashes": [
"sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3",
"sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427" "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"
], ],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'",
"version": "==2.9.0.post0" "version": "==2.9.0.post0"
}, },
"s3transfer": { "s3transfer": {
"hashes": [ "hashes": [
"sha256:5683916b4c724f799e600f41dd9e10a9ff19871bf87623cc8f491cb4f5fa0a19", "sha256:0148ef34d6dd964d0d8cf4311b2b21c474693e57c2e069ec708ce043d2b527be",
"sha256:ceb252b11bcf87080fb7850a224fb6e05c8a776bab8f2b64b7f25b969464839d" "sha256:f5e6db74eb7776a37208001113ea7aa97695368242b364d73e91c981ac522177"
], ],
"markers": "python_version >= '3.8'", "markers": "python_version >= '3.9'",
"version": "==0.10.1" "version": "==0.13.0"
}, },
"six": { "six": {
"hashes": [ "hashes": [
"sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274",
"sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"
], ],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'",
"version": "==1.16.0" "version": "==1.17.0"
}, },
"sqlalchemy": { "sqlalchemy": {
"hashes": [ "hashes": [
"sha256:0094c5dc698a5f78d3d1539853e8ecec02516b62b8223c970c86d44e7a80f6c7", "sha256:023b3ee6169969beea3bb72312e44d8b7c27c75b347942d943cf49397b7edeb5",
"sha256:0138c5c16be3600923fa2169532205d18891b28afa817cb49b50e08f62198bb8", "sha256:03968a349db483936c249f4d9cd14ff2c296adfa1290b660ba6516f973139582",
"sha256:0a089e218654e740a41388893e090d2e2c22c29028c9d1353feb38638820bbeb", "sha256:05132c906066142103b83d9c250b60508af556982a385d96c4eaa9fb9720ac2b",
"sha256:0b3f4c438e37d22b83e640f825ef0f37b95db9aa2d68203f2c9549375d0b2260", "sha256:087b6b52de812741c27231b5a3586384d60c353fbd0e2f81405a814b5591dc8b",
"sha256:16863e2b132b761891d6c49f0a0f70030e0bcac4fd208117f6b7e053e68668d0", "sha256:0b3dbf1e7e9bc95f4bac5e2fb6d3fb2f083254c3fdd20a1789af965caf2d2348",
"sha256:1f9a727312ff6ad5248a4367358e2cf7e625e98b1028b1d7ab7b806b7d757513", "sha256:118c16cd3f1b00c76d69343e38602006c9cfb9998fa4f798606d28d63f23beda",
"sha256:2383146973a15435e4717f94c7509982770e3e54974c71f76500a0136f22810b", "sha256:1936af879e3db023601196a1684d28e12f19ccf93af01bf3280a3262c4b6b4e5",
"sha256:2753743c2afd061bb95a61a51bbb6a1a11ac1c44292fad898f10c9839a7f75b2", "sha256:1e3f196a0c59b0cae9a0cd332eb1a4bda4696e863f4f1cf84ab0347992c548c2",
"sha256:296230899df0b77dec4eb799bcea6fbe39a43707ce7bb166519c97b583cfcab3", "sha256:23a8825495d8b195c4aa9ff1c430c28f2c821e8c5e2d98089228af887e5d7e29",
"sha256:2a4f4da89c74435f2bc61878cd08f3646b699e7d2eba97144030d1be44e27584", "sha256:293cd444d82b18da48c9f71cd7005844dbbd06ca19be1ccf6779154439eec0b8",
"sha256:2b1708916730f4830bc69d6f49d37f7698b5bd7530aca7f04f785f8849e95255", "sha256:32f9dc8c44acdee06c8fc6440db9eae8b4af8b01e4b1aee7bdd7241c22edff4f",
"sha256:2ecabd9ccaa6e914e3dbb2aa46b76dede7eadc8cbf1b8083c94d936bcd5ffb49", "sha256:34ea30ab3ec98355235972dadc497bb659cc75f8292b760394824fab9cf39826",
"sha256:311710f9a2ee235f1403537b10c7687214bb1f2b9ebb52702c5aa4a77f0b3af7", "sha256:3d3549fc3e40667ec7199033a4e40a2f669898a00a7b18a931d3efb4c7900504",
"sha256:37a4b4fb0dd4d2669070fb05b8b8824afd0af57587393015baee1cf9890242d9", "sha256:41836fe661cc98abfae476e14ba1906220f92c4e528771a8a3ae6a151242d2ae",
"sha256:3a365eda439b7a00732638f11072907c1bc8e351c7665e7e5da91b169af794af", "sha256:4d44522480e0bf34c3d63167b8cfa7289c1c54264c2950cc5fc26e7850967e45",
"sha256:3b48154678e76445c7ded1896715ce05319f74b1e73cf82d4f8b59b46e9c0ddc", "sha256:4eeb195cdedaf17aab6b247894ff2734dcead6c08f748e617bfe05bd5a218443",
"sha256:3b69e934f0f2b677ec111b4d83f92dc1a3210a779f69bf905273192cf4ed433e", "sha256:4f67766965996e63bb46cfbf2ce5355fc32d9dd3b8ad7e536a920ff9ee422e23",
"sha256:3cb5a646930c5123f8461f6468901573f334c2c63c795b9af350063a736d0134", "sha256:57df5dc6fdb5ed1a88a1ed2195fd31927e705cad62dedd86b46972752a80f576",
"sha256:408f8b0e2c04677e9c93f40eef3ab22f550fecb3011b187f66a096395ff3d9fd", "sha256:598d9ebc1e796431bbd068e41e4de4dc34312b7aa3292571bb3674a0cb415dd1",
"sha256:40ad017c672c00b9b663fcfcd5f0864a0a97828e2ee7ab0c140dc84058d194cf", "sha256:5b14e97886199c1f52c14629c11d90c11fbb09e9334fa7bb5f6d068d9ced0ce0",
"sha256:5a79d65395ac5e6b0c2890935bad892eabb911c4aa8e8015067ddb37eea3d56c", "sha256:5e22575d169529ac3e0a120cf050ec9daa94b6a9597993d1702884f6954a7d71",
"sha256:5a8e3b0a7e09e94be7510d1661339d6b52daf202ed2f5b1f9f48ea34ee6f2d57", "sha256:60c578c45c949f909a4026b7807044e7e564adf793537fc762b2489d522f3d11",
"sha256:69c9db1ce00e59e8dd09d7bae852a9add716efdc070a3e2068377e6ff0d6fdaa", "sha256:6145afea51ff0af7f2564a05fa95eb46f542919e6523729663a5d285ecb3cf5e",
"sha256:7108d569d3990c71e26a42f60474b4c02c8586c4681af5fd67e51a044fdea86a", "sha256:6375cd674fe82d7aa9816d1cb96ec592bac1726c11e0cafbf40eeee9a4516b5f",
"sha256:77d2edb1f54aff37e3318f611637171e8ec71472f1fdc7348b41dcb226f93d90", "sha256:6854175807af57bdb6425e47adbce7d20a4d79bbfd6f6d6519cd10bb7109a7f8",
"sha256:7d74336c65705b986d12a7e337ba27ab2b9d819993851b140efdf029248e818e", "sha256:6ab60a5089a8f02009f127806f777fca82581c49e127f08413a66056bd9166dd",
"sha256:8409de825f2c3b62ab15788635ccaec0c881c3f12a8af2b12ae4910a0a9aeef6", "sha256:725875a63abf7c399d4548e686debb65cdc2549e1825437096a0af1f7e374814",
"sha256:955991a09f0992c68a499791a753523f50f71a6885531568404fa0f231832aa0", "sha256:7492967c3386df69f80cf67efd665c0f667cee67032090fe01d7d74b0e19bb08",
"sha256:99650e9f4cf3ad0d409fed3eec4f071fadd032e9a5edc7270cd646a26446feeb", "sha256:81965cc20848ab06583506ef54e37cf15c83c7e619df2ad16807c03100745dea",
"sha256:9a5baf9267b752390252889f0c802ea13b52dfee5e369527da229189b8bd592e", "sha256:81c24e0c0fde47a9723c81d5806569cddef103aebbf79dbc9fcbb617153dea30",
"sha256:a0ef36b28534f2a5771191be6edb44cc2673c7b2edf6deac6562400288664221", "sha256:81eedafa609917040d39aa9332e25881a8e7a0862495fcdf2023a9667209deda",
"sha256:a1429a4b0f709f19ff3b0cf13675b2b9bfa8a7e79990003207a011c0db880a13", "sha256:81f413674d85cfd0dfcd6512e10e0f33c19c21860342a4890c3a2b59479929f9",
"sha256:a7bfc726d167f425d4c16269a9a10fe8630ff6d14b683d588044dcef2d0f6be7", "sha256:8280856dd7c6a68ab3a164b4a4b1c51f7691f6d04af4d4ca23d6ecf2261b7923",
"sha256:a943d297126c9230719c27fcbbeab57ecd5d15b0bd6bfd26e91bfcfe64220621", "sha256:82ca366a844eb551daff9d2e6e7a9e5e76d2612c8564f58db6c19a726869c1df",
"sha256:ae8c62fe2480dd61c532ccafdbce9b29dacc126fe8be0d9a927ca3e699b9491a", "sha256:8b4af17bda11e907c51d10686eda89049f9ce5669b08fbe71a29747f1e876036",
"sha256:b60203c63e8f984df92035610c5fb76d941254cf5d19751faab7d33b21e5ddc0", "sha256:90144d3b0c8b139408da50196c5cad2a6909b51b23df1f0538411cd23ffa45d3",
"sha256:b6bf767d14b77f6a18b6982cbbf29d71bede087edae495d11ab358280f304d8e", "sha256:906e6b0d7d452e9a98e5ab8507c0da791856b2380fdee61b765632bb8698026f",
"sha256:b6c7ec2b1f4969fc19b65b7059ed00497e25f54069407a8701091beb69e591a5", "sha256:90c11ceb9a1f482c752a71f203a81858625d8df5746d787a4786bca4ffdf71c6",
"sha256:bba002a9447b291548e8d66fd8c96a6a7ed4f2def0bb155f4f0a1309fd2735d5", "sha256:911cc493ebd60de5f285bcae0491a60b4f2a9f0f5c270edd1c4dbaef7a38fc04",
"sha256:bc0c53579650a891f9b83fa3cecd4e00218e071d0ba00c4890f5be0c34887ed3", "sha256:9a420a91913092d1e20c86a2f5f1fc85c1a8924dbcaf5e0586df8aceb09c9cc2",
"sha256:c4f61ada6979223013d9ab83a3ed003ded6959eae37d0d685db2c147e9143797", "sha256:9f8c9fdd15a55d9465e590a402f42082705d66b05afc3ffd2d2eb3c6ba919560",
"sha256:c62d401223f468eb4da32627bffc0c78ed516b03bb8a34a58be54d618b74d472", "sha256:a104c5694dfd2d864a6f91b0956eb5d5883234119cb40010115fd45a16da5e70",
"sha256:e42203d8d20dc704604862977b1470a122e4892791fe3ed165f041e4bf447a1b", "sha256:a373a400f3e9bac95ba2a06372c4fd1412a7cee53c37fc6c05f829bf672b8769",
"sha256:edc16a50f5e1b7a06a2dcc1f2205b0b961074c123ed17ebda726f376a5ab0953", "sha256:a62448526dd9ed3e3beedc93df9bb6b55a436ed1474db31a2af13b313a70a7e1",
"sha256:efedba7e13aa9a6c8407c48facfdfa108a5a4128e35f4c68f20c3407e4376aa9", "sha256:a8808d5cf866c781150d36a3c8eb3adccfa41a8105d031bf27e92c251e3969d6",
"sha256:f1dc3eabd8c0232ee8387fbe03e0a62220a6f089e278b1f0aaf5e2d6210741ad", "sha256:b1f09b6821406ea1f94053f346f28f8215e293344209129a9c0fcc3578598d7b",
"sha256:f69e4c756ee2686767eb80f94c0125c8b0a0b87ede03eacc5c8ae3b54b99dc46", "sha256:b2ac41acfc8d965fb0c464eb8f44995770239668956dc4cdf502d1b1ffe0d747",
"sha256:f7703c2010355dd28f53deb644a05fc30f796bd8598b43f0ba678878780b6e4c", "sha256:b46fa6eae1cd1c20e6e6f44e19984d438b6b2d8616d21d783d150df714f44078",
"sha256:fa561138a64f949f3e889eb9ab8c58e1504ab351d6cf55259dc4c248eaa19da6" "sha256:b50eab9994d64f4a823ff99a0ed28a6903224ddbe7fef56a6dd865eec9243440",
"sha256:bfc9064f6658a3d1cadeaa0ba07570b83ce6801a1314985bf98ec9b95d74e15f",
"sha256:c0b0e5e1b5d9f3586601048dd68f392dc0cc99a59bb5faf18aab057ce00d00b2",
"sha256:c153265408d18de4cc5ded1941dcd8315894572cddd3c58df5d5b5705b3fa28d",
"sha256:d4ae769b9c1c7757e4ccce94b0641bc203bbdf43ba7a2413ab2523d8d047d8dc",
"sha256:dc56c9788617b8964ad02e8fcfeed4001c1f8ba91a9e1f31483c0dffb207002a",
"sha256:dd5ec3aa6ae6e4d5b5de9357d2133c07be1aff6405b136dad753a16afb6717dd",
"sha256:edba70118c4be3c2b1f90754d308d0b79c6fe2c0fdc52d8ddf603916f83f4db9",
"sha256:ff8e80c4c4932c10493ff97028decfdb622de69cae87e0f127a7ebe32b4069c6"
], ],
"index": "pypi", "index": "pypi",
"markers": "python_version >= '3.7'", "markers": "python_version >= '3.7'",
"version": "==2.0.30" "version": "==2.0.41"
}, },
"tenacity": { "tenacity": {
"hashes": [ "hashes": [
"sha256:3649f6443dbc0d9b01b9d8020a9c4ec7a1ff5f6f3c6c8a036ef371f573fe9185", "sha256:1169d376c297e7de388d18b4481760d478b0e99a777cad3a9c86e556f4b697cb",
"sha256:953d4e6ad24357bceffbc9707bc74349aca9d245f68eb65419cf0c249a1949a2" "sha256:f77bf36710d8b73a50b2dd155c97b870017ad21afe6ab300326b0371b3b05138"
], ],
"index": "pypi", "index": "pypi",
"markers": "python_version >= '3.8'", "markers": "python_version >= '3.9'",
"version": "==8.3.0" "version": "==9.1.2"
}, },
"typing-extensions": { "typing-extensions": {
"hashes": [ "hashes": [
"sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0", "sha256:8676b788e32f02ab42d9e7c61324048ae4c6d844a399eebace3d4979d75ceef4",
"sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a" "sha256:a1514509136dd0b477638fc68d6a91497af5076466ad0fa6c338e44e359944af"
], ],
"markers": "python_version >= '3.8'", "markers": "python_version >= '3.9'",
"version": "==4.11.0" "version": "==4.14.0"
}, },
"urllib3": { "urllib3": {
"hashes": [ "hashes": [
"sha256:34b97092d7e0a3a8cf7cd10e386f401b3737364026c45e622aa02903dffe0f07", "sha256:0ed14ccfbf1c30a9072c7ca157e4319b70d65f623e91e7b32fadb2853431016e",
"sha256:f8ecc1bba5667413457c529ab955bf8c67b45db799d159066261719e328580a0" "sha256:40c2dc0c681e47eb8f90e7e27bf6ff7df2e677421fd46756da1161c39ca70d32"
], ],
"markers": "python_version < '3.10'", "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'",
"version": "==1.26.18" "version": "==1.26.20"
} }
}, },
"develop": { "develop": {
"autopep8": { "autopep8": {
"hashes": [ "hashes": [
"sha256:1fa8964e4618929488f4ec36795c7ff12924a68b8bf01366c094fc52f770b6e7", "sha256:8d6c87eba648fdcfc83e29b788910b8643171c395d9c4bcf115ece035b9c9dda",
"sha256:2bb76888c5edbcafe6aabab3c47ba534f5a2c2d245c2eddced4a30c4b4946357" "sha256:a203fe0fcad7939987422140ab17a930f684763bf7335bdb6709991dd7ef6c2d"
], ],
"index": "pypi", "index": "pypi",
"markers": "python_version >= '3.8'", "markers": "python_version >= '3.8'",
"version": "==2.1.0" "version": "==2.3.1"
}, },
"boto3": { "boto3": {
"hashes": [ "hashes": [
"sha256:b633e8fbf7145bdb995ce68a27d096bb89fd393185b0e773418d81cd78db5a03", "sha256:9edf49640c79a05b0a72f4c2d1e24dfc164344b680535a645f455ac624dc3680",
"sha256:f2c11635be0de7b7c06eb606ece1add125e02d6ed521592294a0a21af09af135" "sha256:db58348849a5af061f0f5ec9c3b699da5221ca83354059fdccb798e3ddb6b62a"
], ],
"index": "pypi", "index": "pypi",
"markers": "python_version >= '3.8'", "markers": "python_version >= '3.8'",
"version": "==1.34.105" "version": "==1.35.57"
}, },
"botocore": { "botocore": {
"hashes": [ "hashes": [
"sha256:727d5d3e800ac8b705fca6e19b6fefa1e728a81d62a712df9bd32ed0117c740b", "sha256:92ddd02469213766872cb2399269dd20948f90348b42bf08379881d5e946cc34",
"sha256:a459d060b541beecb50681e6e8a39313cca981e146a59ba7c5229d62f631a016" "sha256:d96306558085baf0bcb3b022d7a8c39c93494f031edb376694d2b2dcd0e81327"
], ],
"markers": "python_version >= '3.8'", "markers": "python_version >= '3.8'",
"version": "==1.34.105" "version": "==1.35.57"
}, },
"coverage": { "coverage": {
"extras": [ "extras": [
"toml" "toml"
], ],
"hashes": [ "hashes": [
"sha256:0646599e9b139988b63704d704af8e8df7fa4cbc4a1f33df69d97f36cb0a38de", "sha256:00a1d69c112ff5149cabe60d2e2ee948752c975d95f1e1096742e6077affd376",
"sha256:0cdcbc320b14c3e5877ee79e649677cb7d89ef588852e9583e6b24c2e5072661", "sha256:023bf8ee3ec6d35af9c1c6ccc1d18fa69afa1cb29eaac57cb064dbb262a517f9",
"sha256:0d0a0f5e06881ecedfe6f3dd2f56dcb057b6dbeb3327fd32d4b12854df36bf26", "sha256:0294ca37f1ba500667b1aef631e48d875ced93ad5e06fa665a3295bdd1d95111",
"sha256:1434e088b41594baa71188a17533083eabf5609e8e72f16ce8c186001e6b8c41", "sha256:06babbb8f4e74b063dbaeb74ad68dfce9186c595a15f11f5d5683f748fa1d172",
"sha256:16db7f26000a07efcf6aea00316f6ac57e7d9a96501e990a36f40c965ec7a95d", "sha256:0809082ee480bb8f7416507538243c8863ac74fd8a5d2485c46f0f7499f2b491",
"sha256:1cc0fe9b0b3a8364093c53b0b4c0c2dd4bb23acbec4c9240b5f284095ccf7981", "sha256:0b3fb02fe73bed561fa12d279a417b432e5b50fe03e8d663d61b3d5990f29546",
"sha256:1fc81d5878cd6274ce971e0a3a18a8803c3fe25457165314271cf78e3aae3aa2", "sha256:0b58c672d14f16ed92a48db984612f5ce3836ae7d72cdd161001cc54512571f2",
"sha256:2ec92012fefebee89a6b9c79bc39051a6cb3891d562b9270ab10ecfdadbc0c34", "sha256:0bcd1069e710600e8e4cf27f65c90c7843fa8edfb4520fb0ccb88894cad08b11",
"sha256:39afcd3d4339329c5f58de48a52f6e4e50f6578dd6099961cf22228feb25f38f", "sha256:1032e178b76a4e2b5b32e19d0fd0abbce4b58e77a1ca695820d10e491fa32b08",
"sha256:4a7b0ceee8147444347da6a66be737c9d78f3353b0681715b668b72e79203e4a", "sha256:11a223a14e91a4693d2d0755c7a043db43d96a7450b4f356d506c2562c48642c",
"sha256:4a9ca3f2fae0088c3c71d743d85404cec8df9be818a005ea065495bedc33da35", "sha256:12394842a3a8affa3ba62b0d4ab7e9e210c5e366fbac3e8b2a68636fb19892c2",
"sha256:4bf0655ab60d754491004a5efd7f9cccefcc1081a74c9ef2da4735d6ee4a6223", "sha256:182e6cd5c040cec0a1c8d415a87b67ed01193ed9ad458ee427741c7d8513d963",
"sha256:4cc37def103a2725bc672f84bd939a6fe4522310503207aae4d56351644682f1", "sha256:1d5b8007f81b88696d06f7df0cb9af0d3b835fe0c8dbf489bad70b45f0e45613",
"sha256:4fc84a37bfd98db31beae3c2748811a3fa72bf2007ff7902f68746d9757f3746", "sha256:1f76846299ba5c54d12c91d776d9605ae33f8ae2b9d1d3c3703cf2db1a67f2c0",
"sha256:5037f8fcc2a95b1f0e80585bd9d1ec31068a9bcb157d9750a172836e98bc7a90", "sha256:27fb4a050aaf18772db513091c9c13f6cb94ed40eacdef8dad8411d92d9992db",
"sha256:54de9ef3a9da981f7af93eafde4ede199e0846cd819eb27c88e2b712aae9708c", "sha256:29155cd511ee058e260db648b6182c419422a0d2e9a4fa44501898cf918866cf",
"sha256:556cf1a7cbc8028cb60e1ff0be806be2eded2daf8129b8811c63e2b9a6c43bca", "sha256:29fc0f17b1d3fea332f8001d4558f8214af7f1d87a345f3a133c901d60347c73",
"sha256:57e0204b5b745594e5bc14b9b50006da722827f0b8c776949f1135677e88d0b8", "sha256:2b6b4c83d8e8ea79f27ab80778c19bc037759aea298da4b56621f4474ffeb117",
"sha256:5a5740d1fb60ddf268a3811bcd353de34eb56dc24e8f52a7f05ee513b2d4f596", "sha256:2fdef0d83a2d08d69b1f2210a93c416d54e14d9eb398f6ab2f0a209433db19e1",
"sha256:5c3721c2c9e4c4953a41a26c14f4cef64330392a6d2d675c8b1db3b645e31f0e", "sha256:3c65d37f3a9ebb703e710befdc489a38683a5b152242664b973a7b7b22348a4e",
"sha256:5fa567e99765fe98f4e7d7394ce623e794d7cabb170f2ca2ac5a4174437e90dd", "sha256:4f704f0998911abf728a7783799444fcbbe8261c4a6c166f667937ae6a8aa522",
"sha256:5fd215c0c7d7aab005221608a3c2b46f58c0285a819565887ee0b718c052aa4e", "sha256:51b44306032045b383a7a8a2c13878de375117946d68dcb54308111f39775a25",
"sha256:6175d1a0559986c6ee3f7fccfc4a90ecd12ba0a383dcc2da30c2b9918d67d8a3", "sha256:53d202fd109416ce011578f321460795abfe10bb901b883cafd9b3ef851bacfc",
"sha256:61c4bf1ba021817de12b813338c9be9f0ad5b1e781b9b340a6d29fc13e7c1b5e", "sha256:58809e238a8a12a625c70450b48e8767cff9eb67c62e6154a642b21ddf79baea",
"sha256:6537e7c10cc47c595828b8a8be04c72144725c383c4702703ff4e42e44577312", "sha256:5915fcdec0e54ee229926868e9b08586376cae1f5faa9bbaf8faf3561b393d52",
"sha256:68f962d9b72ce69ea8621f57551b2fa9c70509af757ee3b8105d4f51b92b41a7", "sha256:5beb1ee382ad32afe424097de57134175fea3faf847b9af002cc7895be4e2a5a",
"sha256:7352b9161b33fd0b643ccd1f21f3a3908daaddf414f1c6cb9d3a2fd618bf2572", "sha256:5f8ae553cba74085db385d489c7a792ad66f7f9ba2ee85bfa508aeb84cf0ba07",
"sha256:796a79f63eca8814ca3317a1ea443645c9ff0d18b188de470ed7ccd45ae79428", "sha256:5fbd612f8a091954a0c8dd4c0b571b973487277d26476f8480bfa4b2a65b5d06",
"sha256:79afb6197e2f7f60c4824dd4b2d4c2ec5801ceb6ba9ce5d2c3080e5660d51a4f", "sha256:6bd818b7ea14bc6e1f06e241e8234508b21edf1b242d49831831a9450e2f35fa",
"sha256:7a588d39e0925f6a2bff87154752481273cdb1736270642aeb3635cb9b4cad07", "sha256:6f01ba56b1c0e9d149f9ac85a2f999724895229eb36bd997b61e62999e9b0901",
"sha256:8748731ad392d736cc9ccac03c9845b13bb07d020a33423fa5b3a36521ac6e4e", "sha256:73d2b73584446e66ee633eaad1a56aad577c077f46c35ca3283cd687b7715b0b",
"sha256:8fe7502616b67b234482c3ce276ff26f39ffe88adca2acf0261df4b8454668b4", "sha256:7bb92c539a624cf86296dd0c68cd5cc286c9eef2d0c3b8b192b604ce9de20a17",
"sha256:9314d5678dcc665330df5b69c1e726a0e49b27df0461c08ca12674bcc19ef136", "sha256:8165b796df0bd42e10527a3f493c592ba494f16ef3c8b531288e3d0d72c1f6f0",
"sha256:9735317685ba6ec7e3754798c8871c2f49aa5e687cc794a0b1d284b2389d1bd5", "sha256:862264b12ebb65ad8d863d51f17758b1684560b66ab02770d4f0baf2ff75da21",
"sha256:9981706d300c18d8b220995ad22627647be11a4276721c10911e0e9fa44c83e8", "sha256:8902dd6a30173d4ef09954bfcb24b5d7b5190cf14a43170e386979651e09ba19",
"sha256:9e78295f4144f9dacfed4f92935fbe1780021247c2fabf73a819b17f0ccfff8d", "sha256:8cf717ee42012be8c0cb205dbbf18ffa9003c4cbf4ad078db47b95e10748eec5",
"sha256:b016ea6b959d3b9556cb401c55a37547135a587db0115635a443b2ce8f1c7228", "sha256:8ed9281d1b52628e81393f5eaee24a45cbd64965f41857559c2b7ff19385df51",
"sha256:b6cf3764c030e5338e7f61f95bd21147963cf6aa16e09d2f74f1fa52013c1206", "sha256:99b41d18e6b2a48ba949418db48159d7a2e81c5cc290fc934b7d2380515bd0e3",
"sha256:beccf7b8a10b09c4ae543582c1319c6df47d78fd732f854ac68d518ee1fb97fa", "sha256:9cb7fa111d21a6b55cbf633039f7bc2749e74932e3aa7cb7333f675a58a58bf3",
"sha256:c0884920835a033b78d1c73b6d3bbcda8161a900f38a488829a83982925f6c2e", "sha256:a181e99301a0ae128493a24cfe5cfb5b488c4e0bf2f8702091473d033494d04f",
"sha256:c3e757949f268364b96ca894b4c342b41dc6f8f8b66c37878aacef5930db61be", "sha256:a413a096c4cbac202433c850ee43fa326d2e871b24554da8327b01632673a076",
"sha256:ca498687ca46a62ae590253fba634a1fe9836bc56f626852fb2720f334c9e4e5", "sha256:a6b1e54712ba3474f34b7ef7a41e65bd9037ad47916ccb1cc78769bae324c01a",
"sha256:d1d0d98d95dd18fe29dc66808e1accf59f037d5716f86a501fc0256455219668", "sha256:ade3ca1e5f0ff46b678b66201f7ff477e8fa11fb537f3b55c3f0568fbfe6e718",
"sha256:d21918e9ef11edf36764b93101e2ae8cc82aa5efdc7c5a4e9c6c35a48496d601", "sha256:b0ac3d42cb51c4b12df9c5f0dd2f13a4f24f01943627120ec4d293c9181219ba",
"sha256:d7fed867ee50edf1a0b4a11e8e5d0895150e572af1cd6d315d557758bfa9c057", "sha256:b369ead6527d025a0fe7bd3864e46dbee3aa8f652d48df6174f8d0bac9e26e0e",
"sha256:db66fc317a046556a96b453a58eced5024af4582a8dbdc0c23ca4dbc0d5b3146", "sha256:b57b768feb866f44eeed9f46975f3d6406380275c5ddfe22f531a2bf187eda27",
"sha256:dde0070c40ea8bb3641e811c1cfbf18e265d024deff6de52c5950677a8fb1e0f", "sha256:b8d3a03d9bfcaf5b0141d07a88456bb6a4c3ce55c080712fec8418ef3610230e",
"sha256:df4e745a81c110e7446b1cc8131bf986157770fa405fe90e15e850aaf7619bc8", "sha256:bc66f0bf1d7730a17430a50163bb264ba9ded56739112368ba985ddaa9c3bd09",
"sha256:e2213def81a50519d7cc56ed643c9e93e0247f5bbe0d1247d15fa520814a7cd7", "sha256:bf20494da9653f6410213424f5f8ad0ed885e01f7e8e59811f572bdb20b8972e",
"sha256:ef48e2707fb320c8f139424a596f5b69955a85b178f15af261bab871873bb987", "sha256:c48167910a8f644671de9f2083a23630fbf7a1cb70ce939440cd3328e0919f70",
"sha256:f152cbf5b88aaeb836127d920dd0f5e7edff5a66f10c079157306c4343d86c19", "sha256:c481b47f6b5845064c65a7bc78bc0860e635a9b055af0df46fdf1c58cebf8e8f",
"sha256:fc0b4d8bfeabd25ea75e94632f5b6e047eef8adaed0c2161ada1e922e7f7cece" "sha256:c7c8b95bf47db6d19096a5e052ffca0a05f335bc63cef281a6e8fe864d450a72",
"sha256:c9b8e184898ed014884ca84c70562b4a82cbc63b044d366fedc68bc2b2f3394a",
"sha256:cc8ff50b50ce532de2fa7a7daae9dd12f0a699bfcd47f20945364e5c31799fef",
"sha256:d541423cdd416b78626b55f123412fcf979d22a2c39fce251b350de38c15c15b",
"sha256:dab4d16dfef34b185032580e2f2f89253d302facba093d5fa9dbe04f569c4f4b",
"sha256:dacbc52de979f2823a819571f2e3a350a7e36b8cb7484cdb1e289bceaf35305f",
"sha256:df57bdbeffe694e7842092c5e2e0bc80fff7f43379d465f932ef36f027179806",
"sha256:ed8fe9189d2beb6edc14d3ad19800626e1d9f2d975e436f84e19efb7fa19469b",
"sha256:f3ddf056d3ebcf6ce47bdaf56142af51bb7fad09e4af310241e9db7a3a8022e1",
"sha256:f8fe4984b431f8621ca53d9380901f62bfb54ff759a1348cd140490ada7b693c",
"sha256:fe439416eb6380de434886b00c859304338f8b19f6f54811984f3420a2e03858"
], ],
"markers": "python_version >= '3.8'", "markers": "python_version >= '3.9'",
"version": "==7.5.1" "version": "==7.6.4"
}, },
"exceptiongroup": { "exceptiongroup": {
"hashes": [ "hashes": [
"sha256:5258b9ed329c5bbdd31a309f53cbfb0b155341807f6ff7606a1e801a891b29ad", "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b",
"sha256:a4785e48b045528f5bfe627b6ad554ff32def154f42372786903b7abcfe1aa16" "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"
], ],
"markers": "python_version < '3.11'", "markers": "python_version < '3.11'",
"version": "==1.2.1" "version": "==1.2.2"
}, },
"flake8": { "flake8": {
"hashes": [ "hashes": [
"sha256:33f96621059e65eec474169085dc92bf26e7b2d47366b70be2f67ab80dc25132", "sha256:049d058491e228e03e67b390f311bbf88fce2dbaa8fa673e7aea87b7198b8d38",
"sha256:a6dfbb75e03252917f2473ea9653f7cd799c3064e54d4c8140044c5c065f53c3" "sha256:597477df7860daa5aa0fdd84bf5208a043ab96b8e96ab708770ae0364dd03213"
], ],
"index": "pypi", "index": "pypi",
"markers": "python_full_version >= '3.8.1'", "markers": "python_full_version >= '3.8.1'",
"version": "==7.0.0" "version": "==7.1.1"
}, },
"iniconfig": { "iniconfig": {
"hashes": [ "hashes": [
@ -351,11 +305,11 @@
}, },
"packaging": { "packaging": {
"hashes": [ "hashes": [
"sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5", "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759",
"sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9" "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"
], ],
"markers": "python_version >= '3.7'", "markers": "python_version >= '3.8'",
"version": "==24.0" "version": "==24.2"
}, },
"pluggy": { "pluggy": {
"hashes": [ "hashes": [
@ -367,11 +321,11 @@
}, },
"pycodestyle": { "pycodestyle": {
"hashes": [ "hashes": [
"sha256:41ba0e7afc9752dfb53ced5489e89f8186be00e599e712660695b7a75ff2663f", "sha256:46f0fb92069a7c28ab7bb558f05bfc0110dac69a0cd23c61ea0040283a9d78b3",
"sha256:44fe31000b2d866f2e41841b18528a505fbd7fef9017b04eff4e2648a0fadc67" "sha256:6838eae08bbce4f6accd5d5572075c63626a15ee3e6f842df996bf62f6d73521"
], ],
"markers": "python_version >= '3.8'", "markers": "python_version >= '3.8'",
"version": "==2.11.1" "version": "==2.12.1"
}, },
"pyflakes": { "pyflakes": {
"hashes": [ "hashes": [
@ -383,21 +337,21 @@
}, },
"pytest": { "pytest": {
"hashes": [ "hashes": [
"sha256:1733f0620f6cda4095bbf0d9ff8022486e91892245bb9e7d5542c018f612f233", "sha256:70b98107bd648308a7952b06e6ca9a50bc660be218d53c257cc1fc94fda10181",
"sha256:d507d4482197eac0ba2bae2e9babf0672eb333017bcedaa5fb1a3d42c1174b3f" "sha256:a6853c7375b2663155079443d2e45de913a911a11d669df02a50814944db57b2"
], ],
"index": "pypi", "index": "pypi",
"markers": "python_version >= '3.8'", "markers": "python_version >= '3.8'",
"version": "==8.2.0" "version": "==8.3.3"
}, },
"pytest-cov": { "pytest-cov": {
"hashes": [ "hashes": [
"sha256:4f0764a1219df53214206bf1feea4633c3b558a2925c8b59f144f682861ce652", "sha256:eee6f1b9e61008bd34975a4d5bab25801eb31898b032dd55addc93e96fcaaa35",
"sha256:5837b58e9f6ebd335b0f8060eecce69b662415b16dc503883a02f45dfeb14857" "sha256:fde0b595ca248bb8e2d76f020b465f3b107c9632e6a1d1705f17834c89dcadc0"
], ],
"index": "pypi", "index": "pypi",
"markers": "python_version >= '3.8'", "markers": "python_version >= '3.9'",
"version": "==5.0.0" "version": "==6.0.0"
}, },
"python-dateutil": { "python-dateutil": {
"hashes": [ "hashes": [
@ -409,11 +363,11 @@
}, },
"s3transfer": { "s3transfer": {
"hashes": [ "hashes": [
"sha256:5683916b4c724f799e600f41dd9e10a9ff19871bf87623cc8f491cb4f5fa0a19", "sha256:263ed587a5803c6c708d3ce44dc4dfedaab4c1a32e8329bab818933d79ddcf5d",
"sha256:ceb252b11bcf87080fb7850a224fb6e05c8a776bab8f2b64b7f25b969464839d" "sha256:4f50ed74ab84d474ce614475e0b8d5047ff080810aac5d01ea25231cfc944b0c"
], ],
"markers": "python_version >= '3.8'", "markers": "python_version >= '3.8'",
"version": "==0.10.1" "version": "==0.10.3"
}, },
"six": { "six": {
"hashes": [ "hashes": [
@ -425,19 +379,19 @@
}, },
"tomli": { "tomli": {
"hashes": [ "hashes": [
"sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc", "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38",
"sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f" "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"
], ],
"markers": "python_version < '3.11'", "markers": "python_version < '3.11'",
"version": "==2.0.1" "version": "==2.0.2"
}, },
"urllib3": { "urllib3": {
"hashes": [ "hashes": [
"sha256:34b97092d7e0a3a8cf7cd10e386f401b3737364026c45e622aa02903dffe0f07", "sha256:0ed14ccfbf1c30a9072c7ca157e4319b70d65f623e91e7b32fadb2853431016e",
"sha256:f8ecc1bba5667413457c529ab955bf8c67b45db799d159066261719e328580a0" "sha256:40c2dc0c681e47eb8f90e7e27bf6ff7df2e677421fd46756da1161c39ca70d32"
], ],
"markers": "python_version < '3.10'", "markers": "python_version < '3.10'",
"version": "==1.26.18" "version": "==1.26.20"
} }
} }
} }

View File

@ -16,171 +16,115 @@
] ]
}, },
"default": { "default": {
"greenlet": {
"hashes": [
"sha256:01bc7ea167cf943b4c802068e178bbf70ae2e8c080467070d01bfa02f337ee67",
"sha256:0448abc479fab28b00cb472d278828b3ccca164531daab4e970a0458786055d6",
"sha256:086152f8fbc5955df88382e8a75984e2bb1c892ad2e3c80a2508954e52295257",
"sha256:098d86f528c855ead3479afe84b49242e174ed262456c342d70fc7f972bc13c4",
"sha256:149e94a2dd82d19838fe4b2259f1b6b9957d5ba1b25640d2380bea9c5df37676",
"sha256:1551a8195c0d4a68fac7a4325efac0d541b48def35feb49d803674ac32582f61",
"sha256:15d79dd26056573940fcb8c7413d84118086f2ec1a8acdfa854631084393efcc",
"sha256:1996cb9306c8595335bb157d133daf5cf9f693ef413e7673cb07e3e5871379ca",
"sha256:1a7191e42732df52cb5f39d3527217e7ab73cae2cb3694d241e18f53d84ea9a7",
"sha256:1ea188d4f49089fc6fb283845ab18a2518d279c7cd9da1065d7a84e991748728",
"sha256:1f672519db1796ca0d8753f9e78ec02355e862d0998193038c7073045899f305",
"sha256:2516a9957eed41dd8f1ec0c604f1cdc86758b587d964668b5b196a9db5bfcde6",
"sha256:2797aa5aedac23af156bbb5a6aa2cd3427ada2972c828244eb7d1b9255846379",
"sha256:2dd6e660effd852586b6a8478a1d244b8dc90ab5b1321751d2ea15deb49ed414",
"sha256:3ddc0f794e6ad661e321caa8d2f0a55ce01213c74722587256fb6566049a8b04",
"sha256:3ed7fb269f15dc662787f4119ec300ad0702fa1b19d2135a37c2c4de6fadfd4a",
"sha256:419b386f84949bf0e7c73e6032e3457b82a787c1ab4a0e43732898a761cc9dbf",
"sha256:43374442353259554ce33599da8b692d5aa96f8976d567d4badf263371fbe491",
"sha256:52f59dd9c96ad2fc0d5724107444f76eb20aaccb675bf825df6435acb7703559",
"sha256:57e8974f23e47dac22b83436bdcf23080ade568ce77df33159e019d161ce1d1e",
"sha256:5b51e85cb5ceda94e79d019ed36b35386e8c37d22f07d6a751cb659b180d5274",
"sha256:649dde7de1a5eceb258f9cb00bdf50e978c9db1b996964cd80703614c86495eb",
"sha256:64d7675ad83578e3fc149b617a444fab8efdafc9385471f868eb5ff83e446b8b",
"sha256:68834da854554926fbedd38c76e60c4a2e3198c6fbed520b106a8986445caaf9",
"sha256:6b66c9c1e7ccabad3a7d037b2bcb740122a7b17a53734b7d72a344ce39882a1b",
"sha256:70fb482fdf2c707765ab5f0b6655e9cfcf3780d8d87355a063547b41177599be",
"sha256:7170375bcc99f1a2fbd9c306f5be8764eaf3ac6b5cb968862cad4c7057756506",
"sha256:73a411ef564e0e097dbe7e866bb2dda0f027e072b04da387282b02c308807405",
"sha256:77457465d89b8263bca14759d7c1684df840b6811b2499838cc5b040a8b5b113",
"sha256:7f362975f2d179f9e26928c5b517524e89dd48530a0202570d55ad6ca5d8a56f",
"sha256:81bb9c6d52e8321f09c3d165b2a78c680506d9af285bfccbad9fb7ad5a5da3e5",
"sha256:881b7db1ebff4ba09aaaeae6aa491daeb226c8150fc20e836ad00041bcb11230",
"sha256:894393ce10ceac937e56ec00bb71c4c2f8209ad516e96033e4b3b1de270e200d",
"sha256:99bf650dc5d69546e076f413a87481ee1d2d09aaaaaca058c9251b6d8c14783f",
"sha256:9da2bd29ed9e4f15955dd1595ad7bc9320308a3b766ef7f837e23ad4b4aac31a",
"sha256:afaff6cf5200befd5cec055b07d1c0a5a06c040fe5ad148abcd11ba6ab9b114e",
"sha256:b1b5667cced97081bf57b8fa1d6bfca67814b0afd38208d52538316e9422fc61",
"sha256:b37eef18ea55f2ffd8f00ff8fe7c8d3818abd3e25fb73fae2ca3b672e333a7a6",
"sha256:b542be2440edc2d48547b5923c408cbe0fc94afb9f18741faa6ae970dbcb9b6d",
"sha256:b7dcbe92cc99f08c8dd11f930de4d99ef756c3591a5377d1d9cd7dd5e896da71",
"sha256:b7f009caad047246ed379e1c4dbcb8b020f0a390667ea74d2387be2998f58a22",
"sha256:bba5387a6975598857d86de9eac14210a49d554a77eb8261cc68b7d082f78ce2",
"sha256:c5e1536de2aad7bf62e27baf79225d0d64360d4168cf2e6becb91baf1ed074f3",
"sha256:c5ee858cfe08f34712f548c3c363e807e7186f03ad7a5039ebadb29e8c6be067",
"sha256:c9db1c18f0eaad2f804728c67d6c610778456e3e1cc4ab4bbd5eeb8e6053c6fc",
"sha256:d353cadd6083fdb056bb46ed07e4340b0869c305c8ca54ef9da3421acbdf6881",
"sha256:d46677c85c5ba00a9cb6f7a00b2bfa6f812192d2c9f7d9c4f6a55b60216712f3",
"sha256:d4d1ac74f5c0c0524e4a24335350edad7e5f03b9532da7ea4d3c54d527784f2e",
"sha256:d73a9fe764d77f87f8ec26a0c85144d6a951a6c438dfe50487df5595c6373eac",
"sha256:da70d4d51c8b306bb7a031d5cff6cc25ad253affe89b70352af5f1cb68e74b53",
"sha256:daf3cb43b7cf2ba96d614252ce1684c1bccee6b2183a01328c98d36fcd7d5cb0",
"sha256:dca1e2f3ca00b84a396bc1bce13dd21f680f035314d2379c4160c98153b2059b",
"sha256:dd4f49ae60e10adbc94b45c0b5e6a179acc1736cf7a90160b404076ee283cf83",
"sha256:e1f145462f1fa6e4a4ae3c0f782e580ce44d57c8f2c7aae1b6fa88c0b2efdb41",
"sha256:e3391d1e16e2a5a1507d83e4a8b100f4ee626e8eca43cf2cadb543de69827c4c",
"sha256:fcd2469d6a2cf298f198f0487e0a5b1a47a42ca0fa4dfd1b6862c999f018ebbf",
"sha256:fd096eb7ffef17c456cfa587523c5f92321ae02427ff955bebe9e3c63bc9f0da",
"sha256:fe754d231288e1e64323cfad462fcee8f0288654c10bdf4f603a39ed923bef33"
],
"markers": "platform_machine == 'aarch64' or (platform_machine == 'ppc64le' or (platform_machine == 'x86_64' or (platform_machine == 'amd64' or (platform_machine == 'AMD64' or (platform_machine == 'win32' or platform_machine == 'WIN32')))))",
"version": "==3.0.3"
},
"pymysql": { "pymysql": {
"hashes": [ "hashes": [
"sha256:4f13a7df8bf36a51e81dd9f3605fede45a4878fe02f9236349fd82a3f0612f96", "sha256:4de15da4c61dc132f4fb9ab763063e693d521a80fd0e87943b9a453dd4c19d6c",
"sha256:8969ec6d763c856f7073c4c64662882675702efcb114b4bcbb955aea3a069fa7" "sha256:e127611aaf2b417403c60bf4dc570124aeb4a57f5f37b8e95ae399a42f904cd0"
], ],
"index": "pypi", "index": "pypi",
"markers": "python_version >= '3.7'", "markers": "python_version >= '3.7'",
"version": "==1.1.0" "version": "==1.1.1"
}, },
"sqlalchemy": { "sqlalchemy": {
"hashes": [ "hashes": [
"sha256:0094c5dc698a5f78d3d1539853e8ecec02516b62b8223c970c86d44e7a80f6c7", "sha256:023b3ee6169969beea3bb72312e44d8b7c27c75b347942d943cf49397b7edeb5",
"sha256:0138c5c16be3600923fa2169532205d18891b28afa817cb49b50e08f62198bb8", "sha256:03968a349db483936c249f4d9cd14ff2c296adfa1290b660ba6516f973139582",
"sha256:0a089e218654e740a41388893e090d2e2c22c29028c9d1353feb38638820bbeb", "sha256:05132c906066142103b83d9c250b60508af556982a385d96c4eaa9fb9720ac2b",
"sha256:0b3f4c438e37d22b83e640f825ef0f37b95db9aa2d68203f2c9549375d0b2260", "sha256:087b6b52de812741c27231b5a3586384d60c353fbd0e2f81405a814b5591dc8b",
"sha256:16863e2b132b761891d6c49f0a0f70030e0bcac4fd208117f6b7e053e68668d0", "sha256:0b3dbf1e7e9bc95f4bac5e2fb6d3fb2f083254c3fdd20a1789af965caf2d2348",
"sha256:1f9a727312ff6ad5248a4367358e2cf7e625e98b1028b1d7ab7b806b7d757513", "sha256:118c16cd3f1b00c76d69343e38602006c9cfb9998fa4f798606d28d63f23beda",
"sha256:2383146973a15435e4717f94c7509982770e3e54974c71f76500a0136f22810b", "sha256:1936af879e3db023601196a1684d28e12f19ccf93af01bf3280a3262c4b6b4e5",
"sha256:2753743c2afd061bb95a61a51bbb6a1a11ac1c44292fad898f10c9839a7f75b2", "sha256:1e3f196a0c59b0cae9a0cd332eb1a4bda4696e863f4f1cf84ab0347992c548c2",
"sha256:296230899df0b77dec4eb799bcea6fbe39a43707ce7bb166519c97b583cfcab3", "sha256:23a8825495d8b195c4aa9ff1c430c28f2c821e8c5e2d98089228af887e5d7e29",
"sha256:2a4f4da89c74435f2bc61878cd08f3646b699e7d2eba97144030d1be44e27584", "sha256:293cd444d82b18da48c9f71cd7005844dbbd06ca19be1ccf6779154439eec0b8",
"sha256:2b1708916730f4830bc69d6f49d37f7698b5bd7530aca7f04f785f8849e95255", "sha256:32f9dc8c44acdee06c8fc6440db9eae8b4af8b01e4b1aee7bdd7241c22edff4f",
"sha256:2ecabd9ccaa6e914e3dbb2aa46b76dede7eadc8cbf1b8083c94d936bcd5ffb49", "sha256:34ea30ab3ec98355235972dadc497bb659cc75f8292b760394824fab9cf39826",
"sha256:311710f9a2ee235f1403537b10c7687214bb1f2b9ebb52702c5aa4a77f0b3af7", "sha256:3d3549fc3e40667ec7199033a4e40a2f669898a00a7b18a931d3efb4c7900504",
"sha256:37a4b4fb0dd4d2669070fb05b8b8824afd0af57587393015baee1cf9890242d9", "sha256:41836fe661cc98abfae476e14ba1906220f92c4e528771a8a3ae6a151242d2ae",
"sha256:3a365eda439b7a00732638f11072907c1bc8e351c7665e7e5da91b169af794af", "sha256:4d44522480e0bf34c3d63167b8cfa7289c1c54264c2950cc5fc26e7850967e45",
"sha256:3b48154678e76445c7ded1896715ce05319f74b1e73cf82d4f8b59b46e9c0ddc", "sha256:4eeb195cdedaf17aab6b247894ff2734dcead6c08f748e617bfe05bd5a218443",
"sha256:3b69e934f0f2b677ec111b4d83f92dc1a3210a779f69bf905273192cf4ed433e", "sha256:4f67766965996e63bb46cfbf2ce5355fc32d9dd3b8ad7e536a920ff9ee422e23",
"sha256:3cb5a646930c5123f8461f6468901573f334c2c63c795b9af350063a736d0134", "sha256:57df5dc6fdb5ed1a88a1ed2195fd31927e705cad62dedd86b46972752a80f576",
"sha256:408f8b0e2c04677e9c93f40eef3ab22f550fecb3011b187f66a096395ff3d9fd", "sha256:598d9ebc1e796431bbd068e41e4de4dc34312b7aa3292571bb3674a0cb415dd1",
"sha256:40ad017c672c00b9b663fcfcd5f0864a0a97828e2ee7ab0c140dc84058d194cf", "sha256:5b14e97886199c1f52c14629c11d90c11fbb09e9334fa7bb5f6d068d9ced0ce0",
"sha256:5a79d65395ac5e6b0c2890935bad892eabb911c4aa8e8015067ddb37eea3d56c", "sha256:5e22575d169529ac3e0a120cf050ec9daa94b6a9597993d1702884f6954a7d71",
"sha256:5a8e3b0a7e09e94be7510d1661339d6b52daf202ed2f5b1f9f48ea34ee6f2d57", "sha256:60c578c45c949f909a4026b7807044e7e564adf793537fc762b2489d522f3d11",
"sha256:69c9db1ce00e59e8dd09d7bae852a9add716efdc070a3e2068377e6ff0d6fdaa", "sha256:6145afea51ff0af7f2564a05fa95eb46f542919e6523729663a5d285ecb3cf5e",
"sha256:7108d569d3990c71e26a42f60474b4c02c8586c4681af5fd67e51a044fdea86a", "sha256:6375cd674fe82d7aa9816d1cb96ec592bac1726c11e0cafbf40eeee9a4516b5f",
"sha256:77d2edb1f54aff37e3318f611637171e8ec71472f1fdc7348b41dcb226f93d90", "sha256:6854175807af57bdb6425e47adbce7d20a4d79bbfd6f6d6519cd10bb7109a7f8",
"sha256:7d74336c65705b986d12a7e337ba27ab2b9d819993851b140efdf029248e818e", "sha256:6ab60a5089a8f02009f127806f777fca82581c49e127f08413a66056bd9166dd",
"sha256:8409de825f2c3b62ab15788635ccaec0c881c3f12a8af2b12ae4910a0a9aeef6", "sha256:725875a63abf7c399d4548e686debb65cdc2549e1825437096a0af1f7e374814",
"sha256:955991a09f0992c68a499791a753523f50f71a6885531568404fa0f231832aa0", "sha256:7492967c3386df69f80cf67efd665c0f667cee67032090fe01d7d74b0e19bb08",
"sha256:99650e9f4cf3ad0d409fed3eec4f071fadd032e9a5edc7270cd646a26446feeb", "sha256:81965cc20848ab06583506ef54e37cf15c83c7e619df2ad16807c03100745dea",
"sha256:9a5baf9267b752390252889f0c802ea13b52dfee5e369527da229189b8bd592e", "sha256:81c24e0c0fde47a9723c81d5806569cddef103aebbf79dbc9fcbb617153dea30",
"sha256:a0ef36b28534f2a5771191be6edb44cc2673c7b2edf6deac6562400288664221", "sha256:81eedafa609917040d39aa9332e25881a8e7a0862495fcdf2023a9667209deda",
"sha256:a1429a4b0f709f19ff3b0cf13675b2b9bfa8a7e79990003207a011c0db880a13", "sha256:81f413674d85cfd0dfcd6512e10e0f33c19c21860342a4890c3a2b59479929f9",
"sha256:a7bfc726d167f425d4c16269a9a10fe8630ff6d14b683d588044dcef2d0f6be7", "sha256:8280856dd7c6a68ab3a164b4a4b1c51f7691f6d04af4d4ca23d6ecf2261b7923",
"sha256:a943d297126c9230719c27fcbbeab57ecd5d15b0bd6bfd26e91bfcfe64220621", "sha256:82ca366a844eb551daff9d2e6e7a9e5e76d2612c8564f58db6c19a726869c1df",
"sha256:ae8c62fe2480dd61c532ccafdbce9b29dacc126fe8be0d9a927ca3e699b9491a", "sha256:8b4af17bda11e907c51d10686eda89049f9ce5669b08fbe71a29747f1e876036",
"sha256:b60203c63e8f984df92035610c5fb76d941254cf5d19751faab7d33b21e5ddc0", "sha256:90144d3b0c8b139408da50196c5cad2a6909b51b23df1f0538411cd23ffa45d3",
"sha256:b6bf767d14b77f6a18b6982cbbf29d71bede087edae495d11ab358280f304d8e", "sha256:906e6b0d7d452e9a98e5ab8507c0da791856b2380fdee61b765632bb8698026f",
"sha256:b6c7ec2b1f4969fc19b65b7059ed00497e25f54069407a8701091beb69e591a5", "sha256:90c11ceb9a1f482c752a71f203a81858625d8df5746d787a4786bca4ffdf71c6",
"sha256:bba002a9447b291548e8d66fd8c96a6a7ed4f2def0bb155f4f0a1309fd2735d5", "sha256:911cc493ebd60de5f285bcae0491a60b4f2a9f0f5c270edd1c4dbaef7a38fc04",
"sha256:bc0c53579650a891f9b83fa3cecd4e00218e071d0ba00c4890f5be0c34887ed3", "sha256:9a420a91913092d1e20c86a2f5f1fc85c1a8924dbcaf5e0586df8aceb09c9cc2",
"sha256:c4f61ada6979223013d9ab83a3ed003ded6959eae37d0d685db2c147e9143797", "sha256:9f8c9fdd15a55d9465e590a402f42082705d66b05afc3ffd2d2eb3c6ba919560",
"sha256:c62d401223f468eb4da32627bffc0c78ed516b03bb8a34a58be54d618b74d472", "sha256:a104c5694dfd2d864a6f91b0956eb5d5883234119cb40010115fd45a16da5e70",
"sha256:e42203d8d20dc704604862977b1470a122e4892791fe3ed165f041e4bf447a1b", "sha256:a373a400f3e9bac95ba2a06372c4fd1412a7cee53c37fc6c05f829bf672b8769",
"sha256:edc16a50f5e1b7a06a2dcc1f2205b0b961074c123ed17ebda726f376a5ab0953", "sha256:a62448526dd9ed3e3beedc93df9bb6b55a436ed1474db31a2af13b313a70a7e1",
"sha256:efedba7e13aa9a6c8407c48facfdfa108a5a4128e35f4c68f20c3407e4376aa9", "sha256:a8808d5cf866c781150d36a3c8eb3adccfa41a8105d031bf27e92c251e3969d6",
"sha256:f1dc3eabd8c0232ee8387fbe03e0a62220a6f089e278b1f0aaf5e2d6210741ad", "sha256:b1f09b6821406ea1f94053f346f28f8215e293344209129a9c0fcc3578598d7b",
"sha256:f69e4c756ee2686767eb80f94c0125c8b0a0b87ede03eacc5c8ae3b54b99dc46", "sha256:b2ac41acfc8d965fb0c464eb8f44995770239668956dc4cdf502d1b1ffe0d747",
"sha256:f7703c2010355dd28f53deb644a05fc30f796bd8598b43f0ba678878780b6e4c", "sha256:b46fa6eae1cd1c20e6e6f44e19984d438b6b2d8616d21d783d150df714f44078",
"sha256:fa561138a64f949f3e889eb9ab8c58e1504ab351d6cf55259dc4c248eaa19da6" "sha256:b50eab9994d64f4a823ff99a0ed28a6903224ddbe7fef56a6dd865eec9243440",
"sha256:bfc9064f6658a3d1cadeaa0ba07570b83ce6801a1314985bf98ec9b95d74e15f",
"sha256:c0b0e5e1b5d9f3586601048dd68f392dc0cc99a59bb5faf18aab057ce00d00b2",
"sha256:c153265408d18de4cc5ded1941dcd8315894572cddd3c58df5d5b5705b3fa28d",
"sha256:d4ae769b9c1c7757e4ccce94b0641bc203bbdf43ba7a2413ab2523d8d047d8dc",
"sha256:dc56c9788617b8964ad02e8fcfeed4001c1f8ba91a9e1f31483c0dffb207002a",
"sha256:dd5ec3aa6ae6e4d5b5de9357d2133c07be1aff6405b136dad753a16afb6717dd",
"sha256:edba70118c4be3c2b1f90754d308d0b79c6fe2c0fdc52d8ddf603916f83f4db9",
"sha256:ff8e80c4c4932c10493ff97028decfdb622de69cae87e0f127a7ebe32b4069c6"
], ],
"index": "pypi", "index": "pypi",
"markers": "python_version >= '3.7'", "markers": "python_version >= '3.7'",
"version": "==2.0.30" "version": "==2.0.41"
}, },
"tenacity": { "tenacity": {
"hashes": [ "hashes": [
"sha256:3649f6443dbc0d9b01b9d8020a9c4ec7a1ff5f6f3c6c8a036ef371f573fe9185", "sha256:1169d376c297e7de388d18b4481760d478b0e99a777cad3a9c86e556f4b697cb",
"sha256:953d4e6ad24357bceffbc9707bc74349aca9d245f68eb65419cf0c249a1949a2" "sha256:f77bf36710d8b73a50b2dd155c97b870017ad21afe6ab300326b0371b3b05138"
], ],
"index": "pypi", "index": "pypi",
"markers": "python_version >= '3.8'", "markers": "python_version >= '3.9'",
"version": "==8.3.0" "version": "==9.1.2"
}, },
"typing-extensions": { "typing-extensions": {
"hashes": [ "hashes": [
"sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0", "sha256:8676b788e32f02ab42d9e7c61324048ae4c6d844a399eebace3d4979d75ceef4",
"sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a" "sha256:a1514509136dd0b477638fc68d6a91497af5076466ad0fa6c338e44e359944af"
], ],
"markers": "python_version >= '3.8'", "markers": "python_version >= '3.9'",
"version": "==4.11.0" "version": "==4.14.0"
} }
}, },
"develop": { "develop": {
"autopep8": { "autopep8": {
"hashes": [ "hashes": [
"sha256:1fa8964e4618929488f4ec36795c7ff12924a68b8bf01366c094fc52f770b6e7", "sha256:8d6c87eba648fdcfc83e29b788910b8643171c395d9c4bcf115ece035b9c9dda",
"sha256:2bb76888c5edbcafe6aabab3c47ba534f5a2c2d245c2eddced4a30c4b4946357" "sha256:a203fe0fcad7939987422140ab17a930f684763bf7335bdb6709991dd7ef6c2d"
], ],
"index": "pypi", "index": "pypi",
"markers": "python_version >= '3.8'", "markers": "python_version >= '3.8'",
"version": "==2.1.0" "version": "==2.3.1"
}, },
"flake8": { "flake8": {
"hashes": [ "hashes": [
"sha256:33f96621059e65eec474169085dc92bf26e7b2d47366b70be2f67ab80dc25132", "sha256:049d058491e228e03e67b390f311bbf88fce2dbaa8fa673e7aea87b7198b8d38",
"sha256:a6dfbb75e03252917f2473ea9653f7cd799c3064e54d4c8140044c5c065f53c3" "sha256:597477df7860daa5aa0fdd84bf5208a043ab96b8e96ab708770ae0364dd03213"
], ],
"index": "pypi", "index": "pypi",
"markers": "python_full_version >= '3.8.1'", "markers": "python_full_version >= '3.8.1'",
"version": "==7.0.0" "version": "==7.1.1"
}, },
"mccabe": { "mccabe": {
"hashes": [ "hashes": [
@ -192,11 +136,11 @@
}, },
"pycodestyle": { "pycodestyle": {
"hashes": [ "hashes": [
"sha256:41ba0e7afc9752dfb53ced5489e89f8186be00e599e712660695b7a75ff2663f", "sha256:46f0fb92069a7c28ab7bb558f05bfc0110dac69a0cd23c61ea0040283a9d78b3",
"sha256:44fe31000b2d866f2e41841b18528a505fbd7fef9017b04eff4e2648a0fadc67" "sha256:6838eae08bbce4f6accd5d5572075c63626a15ee3e6f842df996bf62f6d73521"
], ],
"markers": "python_version >= '3.8'", "markers": "python_version >= '3.8'",
"version": "==2.11.1" "version": "==2.12.1"
}, },
"pyflakes": { "pyflakes": {
"hashes": [ "hashes": [
@ -208,11 +152,11 @@
}, },
"tomli": { "tomli": {
"hashes": [ "hashes": [
"sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc", "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38",
"sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f" "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"
], ],
"markers": "python_version < '3.11'", "markers": "python_version < '3.11'",
"version": "==2.0.1" "version": "==2.0.2"
} }
} }
} }

View File

@ -16,171 +16,115 @@
] ]
}, },
"default": { "default": {
"greenlet": {
"hashes": [
"sha256:01bc7ea167cf943b4c802068e178bbf70ae2e8c080467070d01bfa02f337ee67",
"sha256:0448abc479fab28b00cb472d278828b3ccca164531daab4e970a0458786055d6",
"sha256:086152f8fbc5955df88382e8a75984e2bb1c892ad2e3c80a2508954e52295257",
"sha256:098d86f528c855ead3479afe84b49242e174ed262456c342d70fc7f972bc13c4",
"sha256:149e94a2dd82d19838fe4b2259f1b6b9957d5ba1b25640d2380bea9c5df37676",
"sha256:1551a8195c0d4a68fac7a4325efac0d541b48def35feb49d803674ac32582f61",
"sha256:15d79dd26056573940fcb8c7413d84118086f2ec1a8acdfa854631084393efcc",
"sha256:1996cb9306c8595335bb157d133daf5cf9f693ef413e7673cb07e3e5871379ca",
"sha256:1a7191e42732df52cb5f39d3527217e7ab73cae2cb3694d241e18f53d84ea9a7",
"sha256:1ea188d4f49089fc6fb283845ab18a2518d279c7cd9da1065d7a84e991748728",
"sha256:1f672519db1796ca0d8753f9e78ec02355e862d0998193038c7073045899f305",
"sha256:2516a9957eed41dd8f1ec0c604f1cdc86758b587d964668b5b196a9db5bfcde6",
"sha256:2797aa5aedac23af156bbb5a6aa2cd3427ada2972c828244eb7d1b9255846379",
"sha256:2dd6e660effd852586b6a8478a1d244b8dc90ab5b1321751d2ea15deb49ed414",
"sha256:3ddc0f794e6ad661e321caa8d2f0a55ce01213c74722587256fb6566049a8b04",
"sha256:3ed7fb269f15dc662787f4119ec300ad0702fa1b19d2135a37c2c4de6fadfd4a",
"sha256:419b386f84949bf0e7c73e6032e3457b82a787c1ab4a0e43732898a761cc9dbf",
"sha256:43374442353259554ce33599da8b692d5aa96f8976d567d4badf263371fbe491",
"sha256:52f59dd9c96ad2fc0d5724107444f76eb20aaccb675bf825df6435acb7703559",
"sha256:57e8974f23e47dac22b83436bdcf23080ade568ce77df33159e019d161ce1d1e",
"sha256:5b51e85cb5ceda94e79d019ed36b35386e8c37d22f07d6a751cb659b180d5274",
"sha256:649dde7de1a5eceb258f9cb00bdf50e978c9db1b996964cd80703614c86495eb",
"sha256:64d7675ad83578e3fc149b617a444fab8efdafc9385471f868eb5ff83e446b8b",
"sha256:68834da854554926fbedd38c76e60c4a2e3198c6fbed520b106a8986445caaf9",
"sha256:6b66c9c1e7ccabad3a7d037b2bcb740122a7b17a53734b7d72a344ce39882a1b",
"sha256:70fb482fdf2c707765ab5f0b6655e9cfcf3780d8d87355a063547b41177599be",
"sha256:7170375bcc99f1a2fbd9c306f5be8764eaf3ac6b5cb968862cad4c7057756506",
"sha256:73a411ef564e0e097dbe7e866bb2dda0f027e072b04da387282b02c308807405",
"sha256:77457465d89b8263bca14759d7c1684df840b6811b2499838cc5b040a8b5b113",
"sha256:7f362975f2d179f9e26928c5b517524e89dd48530a0202570d55ad6ca5d8a56f",
"sha256:81bb9c6d52e8321f09c3d165b2a78c680506d9af285bfccbad9fb7ad5a5da3e5",
"sha256:881b7db1ebff4ba09aaaeae6aa491daeb226c8150fc20e836ad00041bcb11230",
"sha256:894393ce10ceac937e56ec00bb71c4c2f8209ad516e96033e4b3b1de270e200d",
"sha256:99bf650dc5d69546e076f413a87481ee1d2d09aaaaaca058c9251b6d8c14783f",
"sha256:9da2bd29ed9e4f15955dd1595ad7bc9320308a3b766ef7f837e23ad4b4aac31a",
"sha256:afaff6cf5200befd5cec055b07d1c0a5a06c040fe5ad148abcd11ba6ab9b114e",
"sha256:b1b5667cced97081bf57b8fa1d6bfca67814b0afd38208d52538316e9422fc61",
"sha256:b37eef18ea55f2ffd8f00ff8fe7c8d3818abd3e25fb73fae2ca3b672e333a7a6",
"sha256:b542be2440edc2d48547b5923c408cbe0fc94afb9f18741faa6ae970dbcb9b6d",
"sha256:b7dcbe92cc99f08c8dd11f930de4d99ef756c3591a5377d1d9cd7dd5e896da71",
"sha256:b7f009caad047246ed379e1c4dbcb8b020f0a390667ea74d2387be2998f58a22",
"sha256:bba5387a6975598857d86de9eac14210a49d554a77eb8261cc68b7d082f78ce2",
"sha256:c5e1536de2aad7bf62e27baf79225d0d64360d4168cf2e6becb91baf1ed074f3",
"sha256:c5ee858cfe08f34712f548c3c363e807e7186f03ad7a5039ebadb29e8c6be067",
"sha256:c9db1c18f0eaad2f804728c67d6c610778456e3e1cc4ab4bbd5eeb8e6053c6fc",
"sha256:d353cadd6083fdb056bb46ed07e4340b0869c305c8ca54ef9da3421acbdf6881",
"sha256:d46677c85c5ba00a9cb6f7a00b2bfa6f812192d2c9f7d9c4f6a55b60216712f3",
"sha256:d4d1ac74f5c0c0524e4a24335350edad7e5f03b9532da7ea4d3c54d527784f2e",
"sha256:d73a9fe764d77f87f8ec26a0c85144d6a951a6c438dfe50487df5595c6373eac",
"sha256:da70d4d51c8b306bb7a031d5cff6cc25ad253affe89b70352af5f1cb68e74b53",
"sha256:daf3cb43b7cf2ba96d614252ce1684c1bccee6b2183a01328c98d36fcd7d5cb0",
"sha256:dca1e2f3ca00b84a396bc1bce13dd21f680f035314d2379c4160c98153b2059b",
"sha256:dd4f49ae60e10adbc94b45c0b5e6a179acc1736cf7a90160b404076ee283cf83",
"sha256:e1f145462f1fa6e4a4ae3c0f782e580ce44d57c8f2c7aae1b6fa88c0b2efdb41",
"sha256:e3391d1e16e2a5a1507d83e4a8b100f4ee626e8eca43cf2cadb543de69827c4c",
"sha256:fcd2469d6a2cf298f198f0487e0a5b1a47a42ca0fa4dfd1b6862c999f018ebbf",
"sha256:fd096eb7ffef17c456cfa587523c5f92321ae02427ff955bebe9e3c63bc9f0da",
"sha256:fe754d231288e1e64323cfad462fcee8f0288654c10bdf4f603a39ed923bef33"
],
"markers": "platform_machine == 'aarch64' or (platform_machine == 'ppc64le' or (platform_machine == 'x86_64' or (platform_machine == 'amd64' or (platform_machine == 'AMD64' or (platform_machine == 'win32' or platform_machine == 'WIN32')))))",
"version": "==3.0.3"
},
"pymysql": { "pymysql": {
"hashes": [ "hashes": [
"sha256:4f13a7df8bf36a51e81dd9f3605fede45a4878fe02f9236349fd82a3f0612f96", "sha256:4de15da4c61dc132f4fb9ab763063e693d521a80fd0e87943b9a453dd4c19d6c",
"sha256:8969ec6d763c856f7073c4c64662882675702efcb114b4bcbb955aea3a069fa7" "sha256:e127611aaf2b417403c60bf4dc570124aeb4a57f5f37b8e95ae399a42f904cd0"
], ],
"index": "pypi", "index": "pypi",
"markers": "python_version >= '3.7'", "markers": "python_version >= '3.7'",
"version": "==1.1.0" "version": "==1.1.1"
}, },
"sqlalchemy": { "sqlalchemy": {
"hashes": [ "hashes": [
"sha256:0094c5dc698a5f78d3d1539853e8ecec02516b62b8223c970c86d44e7a80f6c7", "sha256:023b3ee6169969beea3bb72312e44d8b7c27c75b347942d943cf49397b7edeb5",
"sha256:0138c5c16be3600923fa2169532205d18891b28afa817cb49b50e08f62198bb8", "sha256:03968a349db483936c249f4d9cd14ff2c296adfa1290b660ba6516f973139582",
"sha256:0a089e218654e740a41388893e090d2e2c22c29028c9d1353feb38638820bbeb", "sha256:05132c906066142103b83d9c250b60508af556982a385d96c4eaa9fb9720ac2b",
"sha256:0b3f4c438e37d22b83e640f825ef0f37b95db9aa2d68203f2c9549375d0b2260", "sha256:087b6b52de812741c27231b5a3586384d60c353fbd0e2f81405a814b5591dc8b",
"sha256:16863e2b132b761891d6c49f0a0f70030e0bcac4fd208117f6b7e053e68668d0", "sha256:0b3dbf1e7e9bc95f4bac5e2fb6d3fb2f083254c3fdd20a1789af965caf2d2348",
"sha256:1f9a727312ff6ad5248a4367358e2cf7e625e98b1028b1d7ab7b806b7d757513", "sha256:118c16cd3f1b00c76d69343e38602006c9cfb9998fa4f798606d28d63f23beda",
"sha256:2383146973a15435e4717f94c7509982770e3e54974c71f76500a0136f22810b", "sha256:1936af879e3db023601196a1684d28e12f19ccf93af01bf3280a3262c4b6b4e5",
"sha256:2753743c2afd061bb95a61a51bbb6a1a11ac1c44292fad898f10c9839a7f75b2", "sha256:1e3f196a0c59b0cae9a0cd332eb1a4bda4696e863f4f1cf84ab0347992c548c2",
"sha256:296230899df0b77dec4eb799bcea6fbe39a43707ce7bb166519c97b583cfcab3", "sha256:23a8825495d8b195c4aa9ff1c430c28f2c821e8c5e2d98089228af887e5d7e29",
"sha256:2a4f4da89c74435f2bc61878cd08f3646b699e7d2eba97144030d1be44e27584", "sha256:293cd444d82b18da48c9f71cd7005844dbbd06ca19be1ccf6779154439eec0b8",
"sha256:2b1708916730f4830bc69d6f49d37f7698b5bd7530aca7f04f785f8849e95255", "sha256:32f9dc8c44acdee06c8fc6440db9eae8b4af8b01e4b1aee7bdd7241c22edff4f",
"sha256:2ecabd9ccaa6e914e3dbb2aa46b76dede7eadc8cbf1b8083c94d936bcd5ffb49", "sha256:34ea30ab3ec98355235972dadc497bb659cc75f8292b760394824fab9cf39826",
"sha256:311710f9a2ee235f1403537b10c7687214bb1f2b9ebb52702c5aa4a77f0b3af7", "sha256:3d3549fc3e40667ec7199033a4e40a2f669898a00a7b18a931d3efb4c7900504",
"sha256:37a4b4fb0dd4d2669070fb05b8b8824afd0af57587393015baee1cf9890242d9", "sha256:41836fe661cc98abfae476e14ba1906220f92c4e528771a8a3ae6a151242d2ae",
"sha256:3a365eda439b7a00732638f11072907c1bc8e351c7665e7e5da91b169af794af", "sha256:4d44522480e0bf34c3d63167b8cfa7289c1c54264c2950cc5fc26e7850967e45",
"sha256:3b48154678e76445c7ded1896715ce05319f74b1e73cf82d4f8b59b46e9c0ddc", "sha256:4eeb195cdedaf17aab6b247894ff2734dcead6c08f748e617bfe05bd5a218443",
"sha256:3b69e934f0f2b677ec111b4d83f92dc1a3210a779f69bf905273192cf4ed433e", "sha256:4f67766965996e63bb46cfbf2ce5355fc32d9dd3b8ad7e536a920ff9ee422e23",
"sha256:3cb5a646930c5123f8461f6468901573f334c2c63c795b9af350063a736d0134", "sha256:57df5dc6fdb5ed1a88a1ed2195fd31927e705cad62dedd86b46972752a80f576",
"sha256:408f8b0e2c04677e9c93f40eef3ab22f550fecb3011b187f66a096395ff3d9fd", "sha256:598d9ebc1e796431bbd068e41e4de4dc34312b7aa3292571bb3674a0cb415dd1",
"sha256:40ad017c672c00b9b663fcfcd5f0864a0a97828e2ee7ab0c140dc84058d194cf", "sha256:5b14e97886199c1f52c14629c11d90c11fbb09e9334fa7bb5f6d068d9ced0ce0",
"sha256:5a79d65395ac5e6b0c2890935bad892eabb911c4aa8e8015067ddb37eea3d56c", "sha256:5e22575d169529ac3e0a120cf050ec9daa94b6a9597993d1702884f6954a7d71",
"sha256:5a8e3b0a7e09e94be7510d1661339d6b52daf202ed2f5b1f9f48ea34ee6f2d57", "sha256:60c578c45c949f909a4026b7807044e7e564adf793537fc762b2489d522f3d11",
"sha256:69c9db1ce00e59e8dd09d7bae852a9add716efdc070a3e2068377e6ff0d6fdaa", "sha256:6145afea51ff0af7f2564a05fa95eb46f542919e6523729663a5d285ecb3cf5e",
"sha256:7108d569d3990c71e26a42f60474b4c02c8586c4681af5fd67e51a044fdea86a", "sha256:6375cd674fe82d7aa9816d1cb96ec592bac1726c11e0cafbf40eeee9a4516b5f",
"sha256:77d2edb1f54aff37e3318f611637171e8ec71472f1fdc7348b41dcb226f93d90", "sha256:6854175807af57bdb6425e47adbce7d20a4d79bbfd6f6d6519cd10bb7109a7f8",
"sha256:7d74336c65705b986d12a7e337ba27ab2b9d819993851b140efdf029248e818e", "sha256:6ab60a5089a8f02009f127806f777fca82581c49e127f08413a66056bd9166dd",
"sha256:8409de825f2c3b62ab15788635ccaec0c881c3f12a8af2b12ae4910a0a9aeef6", "sha256:725875a63abf7c399d4548e686debb65cdc2549e1825437096a0af1f7e374814",
"sha256:955991a09f0992c68a499791a753523f50f71a6885531568404fa0f231832aa0", "sha256:7492967c3386df69f80cf67efd665c0f667cee67032090fe01d7d74b0e19bb08",
"sha256:99650e9f4cf3ad0d409fed3eec4f071fadd032e9a5edc7270cd646a26446feeb", "sha256:81965cc20848ab06583506ef54e37cf15c83c7e619df2ad16807c03100745dea",
"sha256:9a5baf9267b752390252889f0c802ea13b52dfee5e369527da229189b8bd592e", "sha256:81c24e0c0fde47a9723c81d5806569cddef103aebbf79dbc9fcbb617153dea30",
"sha256:a0ef36b28534f2a5771191be6edb44cc2673c7b2edf6deac6562400288664221", "sha256:81eedafa609917040d39aa9332e25881a8e7a0862495fcdf2023a9667209deda",
"sha256:a1429a4b0f709f19ff3b0cf13675b2b9bfa8a7e79990003207a011c0db880a13", "sha256:81f413674d85cfd0dfcd6512e10e0f33c19c21860342a4890c3a2b59479929f9",
"sha256:a7bfc726d167f425d4c16269a9a10fe8630ff6d14b683d588044dcef2d0f6be7", "sha256:8280856dd7c6a68ab3a164b4a4b1c51f7691f6d04af4d4ca23d6ecf2261b7923",
"sha256:a943d297126c9230719c27fcbbeab57ecd5d15b0bd6bfd26e91bfcfe64220621", "sha256:82ca366a844eb551daff9d2e6e7a9e5e76d2612c8564f58db6c19a726869c1df",
"sha256:ae8c62fe2480dd61c532ccafdbce9b29dacc126fe8be0d9a927ca3e699b9491a", "sha256:8b4af17bda11e907c51d10686eda89049f9ce5669b08fbe71a29747f1e876036",
"sha256:b60203c63e8f984df92035610c5fb76d941254cf5d19751faab7d33b21e5ddc0", "sha256:90144d3b0c8b139408da50196c5cad2a6909b51b23df1f0538411cd23ffa45d3",
"sha256:b6bf767d14b77f6a18b6982cbbf29d71bede087edae495d11ab358280f304d8e", "sha256:906e6b0d7d452e9a98e5ab8507c0da791856b2380fdee61b765632bb8698026f",
"sha256:b6c7ec2b1f4969fc19b65b7059ed00497e25f54069407a8701091beb69e591a5", "sha256:90c11ceb9a1f482c752a71f203a81858625d8df5746d787a4786bca4ffdf71c6",
"sha256:bba002a9447b291548e8d66fd8c96a6a7ed4f2def0bb155f4f0a1309fd2735d5", "sha256:911cc493ebd60de5f285bcae0491a60b4f2a9f0f5c270edd1c4dbaef7a38fc04",
"sha256:bc0c53579650a891f9b83fa3cecd4e00218e071d0ba00c4890f5be0c34887ed3", "sha256:9a420a91913092d1e20c86a2f5f1fc85c1a8924dbcaf5e0586df8aceb09c9cc2",
"sha256:c4f61ada6979223013d9ab83a3ed003ded6959eae37d0d685db2c147e9143797", "sha256:9f8c9fdd15a55d9465e590a402f42082705d66b05afc3ffd2d2eb3c6ba919560",
"sha256:c62d401223f468eb4da32627bffc0c78ed516b03bb8a34a58be54d618b74d472", "sha256:a104c5694dfd2d864a6f91b0956eb5d5883234119cb40010115fd45a16da5e70",
"sha256:e42203d8d20dc704604862977b1470a122e4892791fe3ed165f041e4bf447a1b", "sha256:a373a400f3e9bac95ba2a06372c4fd1412a7cee53c37fc6c05f829bf672b8769",
"sha256:edc16a50f5e1b7a06a2dcc1f2205b0b961074c123ed17ebda726f376a5ab0953", "sha256:a62448526dd9ed3e3beedc93df9bb6b55a436ed1474db31a2af13b313a70a7e1",
"sha256:efedba7e13aa9a6c8407c48facfdfa108a5a4128e35f4c68f20c3407e4376aa9", "sha256:a8808d5cf866c781150d36a3c8eb3adccfa41a8105d031bf27e92c251e3969d6",
"sha256:f1dc3eabd8c0232ee8387fbe03e0a62220a6f089e278b1f0aaf5e2d6210741ad", "sha256:b1f09b6821406ea1f94053f346f28f8215e293344209129a9c0fcc3578598d7b",
"sha256:f69e4c756ee2686767eb80f94c0125c8b0a0b87ede03eacc5c8ae3b54b99dc46", "sha256:b2ac41acfc8d965fb0c464eb8f44995770239668956dc4cdf502d1b1ffe0d747",
"sha256:f7703c2010355dd28f53deb644a05fc30f796bd8598b43f0ba678878780b6e4c", "sha256:b46fa6eae1cd1c20e6e6f44e19984d438b6b2d8616d21d783d150df714f44078",
"sha256:fa561138a64f949f3e889eb9ab8c58e1504ab351d6cf55259dc4c248eaa19da6" "sha256:b50eab9994d64f4a823ff99a0ed28a6903224ddbe7fef56a6dd865eec9243440",
"sha256:bfc9064f6658a3d1cadeaa0ba07570b83ce6801a1314985bf98ec9b95d74e15f",
"sha256:c0b0e5e1b5d9f3586601048dd68f392dc0cc99a59bb5faf18aab057ce00d00b2",
"sha256:c153265408d18de4cc5ded1941dcd8315894572cddd3c58df5d5b5705b3fa28d",
"sha256:d4ae769b9c1c7757e4ccce94b0641bc203bbdf43ba7a2413ab2523d8d047d8dc",
"sha256:dc56c9788617b8964ad02e8fcfeed4001c1f8ba91a9e1f31483c0dffb207002a",
"sha256:dd5ec3aa6ae6e4d5b5de9357d2133c07be1aff6405b136dad753a16afb6717dd",
"sha256:edba70118c4be3c2b1f90754d308d0b79c6fe2c0fdc52d8ddf603916f83f4db9",
"sha256:ff8e80c4c4932c10493ff97028decfdb622de69cae87e0f127a7ebe32b4069c6"
], ],
"index": "pypi", "index": "pypi",
"markers": "python_version >= '3.7'", "markers": "python_version >= '3.7'",
"version": "==2.0.30" "version": "==2.0.41"
}, },
"tenacity": { "tenacity": {
"hashes": [ "hashes": [
"sha256:3649f6443dbc0d9b01b9d8020a9c4ec7a1ff5f6f3c6c8a036ef371f573fe9185", "sha256:1169d376c297e7de388d18b4481760d478b0e99a777cad3a9c86e556f4b697cb",
"sha256:953d4e6ad24357bceffbc9707bc74349aca9d245f68eb65419cf0c249a1949a2" "sha256:f77bf36710d8b73a50b2dd155c97b870017ad21afe6ab300326b0371b3b05138"
], ],
"index": "pypi", "index": "pypi",
"markers": "python_version >= '3.8'", "markers": "python_version >= '3.9'",
"version": "==8.3.0" "version": "==9.1.2"
}, },
"typing-extensions": { "typing-extensions": {
"hashes": [ "hashes": [
"sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0", "sha256:8676b788e32f02ab42d9e7c61324048ae4c6d844a399eebace3d4979d75ceef4",
"sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a" "sha256:a1514509136dd0b477638fc68d6a91497af5076466ad0fa6c338e44e359944af"
], ],
"markers": "python_version >= '3.8'", "markers": "python_version >= '3.9'",
"version": "==4.11.0" "version": "==4.14.0"
} }
}, },
"develop": { "develop": {
"autopep8": { "autopep8": {
"hashes": [ "hashes": [
"sha256:1fa8964e4618929488f4ec36795c7ff12924a68b8bf01366c094fc52f770b6e7", "sha256:8d6c87eba648fdcfc83e29b788910b8643171c395d9c4bcf115ece035b9c9dda",
"sha256:2bb76888c5edbcafe6aabab3c47ba534f5a2c2d245c2eddced4a30c4b4946357" "sha256:a203fe0fcad7939987422140ab17a930f684763bf7335bdb6709991dd7ef6c2d"
], ],
"index": "pypi", "index": "pypi",
"markers": "python_version >= '3.8'", "markers": "python_version >= '3.8'",
"version": "==2.1.0" "version": "==2.3.1"
}, },
"flake8": { "flake8": {
"hashes": [ "hashes": [
"sha256:33f96621059e65eec474169085dc92bf26e7b2d47366b70be2f67ab80dc25132", "sha256:049d058491e228e03e67b390f311bbf88fce2dbaa8fa673e7aea87b7198b8d38",
"sha256:a6dfbb75e03252917f2473ea9653f7cd799c3064e54d4c8140044c5c065f53c3" "sha256:597477df7860daa5aa0fdd84bf5208a043ab96b8e96ab708770ae0364dd03213"
], ],
"index": "pypi", "index": "pypi",
"markers": "python_full_version >= '3.8.1'", "markers": "python_full_version >= '3.8.1'",
"version": "==7.0.0" "version": "==7.1.1"
}, },
"mccabe": { "mccabe": {
"hashes": [ "hashes": [
@ -192,11 +136,11 @@
}, },
"pycodestyle": { "pycodestyle": {
"hashes": [ "hashes": [
"sha256:41ba0e7afc9752dfb53ced5489e89f8186be00e599e712660695b7a75ff2663f", "sha256:46f0fb92069a7c28ab7bb558f05bfc0110dac69a0cd23c61ea0040283a9d78b3",
"sha256:44fe31000b2d866f2e41841b18528a505fbd7fef9017b04eff4e2648a0fadc67" "sha256:6838eae08bbce4f6accd5d5572075c63626a15ee3e6f842df996bf62f6d73521"
], ],
"markers": "python_version >= '3.8'", "markers": "python_version >= '3.8'",
"version": "==2.11.1" "version": "==2.12.1"
}, },
"pyflakes": { "pyflakes": {
"hashes": [ "hashes": [
@ -208,11 +152,11 @@
}, },
"tomli": { "tomli": {
"hashes": [ "hashes": [
"sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc", "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38",
"sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f" "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"
], ],
"markers": "python_version < '3.11'", "markers": "python_version < '3.11'",
"version": "==2.0.1" "version": "==2.0.2"
} }
} }
} }

View File

@ -26,6 +26,7 @@ openpyxl = "*"
xlrd = "*" xlrd = "*"
sqlalchemy = "==2.*" sqlalchemy = "==2.*"
mojimoji = "*" mojimoji = "*"
numpy = "==2.0.*"
[dev-packages] [dev-packages]
autopep8 = "*" autopep8 = "*"

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,10 @@
FROM python:3.9 FROM python:3.12-slim-bookworm
ENV TZ="Asia/Tokyo" ENV TZ="Asia/Tokyo"
# pythonの標準出力をバッファリングしないフラグ
ENV PYTHONUNBUFFERED=1
# pythonのバイトコードを生成しないフラグ
ENV PYTHONDONTWRITEBYTECODE=1
WORKDIR /usr/src/app WORKDIR /usr/src/app
COPY Pipfile Pipfile.lock ./ COPY Pipfile Pipfile.lock ./
@ -12,6 +16,7 @@ RUN apt update && apt install -y less vim curl wget gzip unzip sudo lsb-release
# mysqlをインストール # mysqlをインストール
RUN \ RUN \
wget https://dev.mysql.com/get/mysql-apt-config_0.8.29-1_all.deb && \ wget https://dev.mysql.com/get/mysql-apt-config_0.8.29-1_all.deb && \
apt install -y gnupg && \
dpkg -i mysql-apt-config_0.8.29-1_all.deb < mysql_dpkg_selection.txt && \ dpkg -i mysql-apt-config_0.8.29-1_all.deb < mysql_dpkg_selection.txt && \
apt update && \ apt update && \
apt install -y mysql-client apt install -y mysql-client

View File

@ -10,7 +10,7 @@ autopep8 = "*"
flake8 = "*" flake8 = "*"
[requires] [requires]
python_version = "3.9" python_version = "3.12"
[pipenv] [pipenv]
allow_prereleases = true allow_prereleases = true

View File

@ -1,11 +1,11 @@
{ {
"_meta": { "_meta": {
"hash": { "hash": {
"sha256": "cc5f54bfb2073051a26f113ceac64e12fdd0bf8faa36f1a42210cc9c921c134b" "sha256": "2f7808325e11704ced6ad10c85e1d583663a03d7ccabaa9696ab1fe133a6b30c"
}, },
"pipfile-spec": 6, "pipfile-spec": 6,
"requires": { "requires": {
"python_version": "3.9" "python_version": "3.12"
}, },
"sources": [ "sources": [
{ {
@ -19,19 +19,21 @@
"develop": { "develop": {
"autopep8": { "autopep8": {
"hashes": [ "hashes": [
"sha256:1fa8964e4618929488f4ec36795c7ff12924a68b8bf01366c094fc52f770b6e7", "sha256:89440a4f969197b69a995e4ce0661b031f455a9f776d2c5ba3dbd83466931758",
"sha256:2bb76888c5edbcafe6aabab3c47ba534f5a2c2d245c2eddced4a30c4b4946357" "sha256:ce8ad498672c845a0c3de2629c15b635ec2b05ef8177a6e7c91c74f3e9b51128"
], ],
"index": "pypi", "index": "pypi",
"version": "==2.1.0" "markers": "python_version >= '3.9'",
"version": "==2.3.2"
}, },
"flake8": { "flake8": {
"hashes": [ "hashes": [
"sha256:33f96621059e65eec474169085dc92bf26e7b2d47366b70be2f67ab80dc25132", "sha256:1cbc62e65536f65e6d754dfe6f1bada7f5cf392d6f5db3c2b85892466c3e7c1a",
"sha256:a6dfbb75e03252917f2473ea9653f7cd799c3064e54d4c8140044c5c065f53c3" "sha256:c586ffd0b41540951ae41af572e6790dbd49fc12b3aa2541685d253d9bd504bd"
], ],
"index": "pypi", "index": "pypi",
"version": "==7.0.0" "markers": "python_full_version >= '3.8.1'",
"version": "==7.1.2"
}, },
"mccabe": { "mccabe": {
"hashes": [ "hashes": [
@ -43,11 +45,11 @@
}, },
"pycodestyle": { "pycodestyle": {
"hashes": [ "hashes": [
"sha256:41ba0e7afc9752dfb53ced5489e89f8186be00e599e712660695b7a75ff2663f", "sha256:46f0fb92069a7c28ab7bb558f05bfc0110dac69a0cd23c61ea0040283a9d78b3",
"sha256:44fe31000b2d866f2e41841b18528a505fbd7fef9017b04eff4e2648a0fadc67" "sha256:6838eae08bbce4f6accd5d5572075c63626a15ee3e6f842df996bf62f6d73521"
], ],
"markers": "python_version >= '3.8'", "markers": "python_version >= '3.8'",
"version": "==2.11.1" "version": "==2.12.1"
}, },
"pyflakes": { "pyflakes": {
"hashes": [ "hashes": [
@ -56,14 +58,6 @@
], ],
"markers": "python_version >= '3.8'", "markers": "python_version >= '3.8'",
"version": "==3.2.0" "version": "==3.2.0"
},
"tomli": {
"hashes": [
"sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc",
"sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"
],
"markers": "python_version < '3.11'",
"version": "==2.0.1"
} }
} }
} }

View File

@ -1,20 +1,21 @@
FROM python:3.9 # AWS公式のDockerイメージを利用
FROM public.ecr.aws/lambda/python:3.12
ENV WORKDIR /function/
ENV TZ="Asia/Tokyo" ENV TZ="Asia/Tokyo"
WORKDIR ${WORKDIR}
COPY Pipfile Pipfile.lock ${WORKDIR} # pythonの標準出力をバッファリングしないフラグ
RUN \ ENV PYTHONUNBUFFERED=1
apt update -y && \ # pythonのバイトコードを生成しないフラグ
# パッケージのセキュリティアップデートのみを適用するコマンド ENV PYTHONDONTWRITEBYTECODE=1
apt install -y unattended-upgrades && \
unattended-upgrades && \ # 必要なファイルをイメージにコピー
pip install --upgrade pip wheel setuptools && \ COPY Pipfile Pipfile.lock ./
pip install pipenv --no-cache-dir && \
# ライブラリインストール
RUN pip install pipenv --no-cache-dir && \
pipenv install --system --deploy && \ pipenv install --system --deploy && \
pip uninstall -y pipenv virtualenv-clone virtualenv pip uninstall -y pipenv virtualenv-clone virtualenv
COPY check-view-option ./ COPY check-view-option ./
ENTRYPOINT [ "/usr/local/bin/python", "-m", "awslambdaric" ] # lambdaハンドラを起動
CMD [ "main.handler" ] CMD [ "main.handler" ]

View File

@ -4,7 +4,6 @@ verify_ssl = true
name = "pypi" name = "pypi"
[packages] [packages]
awslambdaric = "*"
boto3 = "*" boto3 = "*"
pymysql = "*" pymysql = "*"
cryptography = "*" cryptography = "*"
@ -14,4 +13,4 @@ autopep8 = "*"
flake8 = "*" flake8 = "*"
[requires] [requires]
python_version = "3.9" python_version = "3.12"

View File

@ -1,11 +1,11 @@
{ {
"_meta": { "_meta": {
"hash": { "hash": {
"sha256": "0bf055eba7a510de27e990db23f5203946ebbc02a6c678b89051dc0d1437444f" "sha256": "8a7a2fa969a29f51ceb9f9370d834d1f06d1bd604f719c2280bf4cdf06be3943"
}, },
"pipfile-spec": 6, "pipfile-spec": 6,
"requires": { "requires": {
"python_version": "3.9" "python_version": "3.12"
}, },
"sources": [ "sources": [
{ {
@ -16,149 +16,139 @@
] ]
}, },
"default": { "default": {
"awslambdaric": {
"hashes": [
"sha256:04d4d4b63cef0e9aad3adea95a5cf3f81634bccde625f104ff025f764a3e8874",
"sha256:0a9922690eb7722417cbac55b913ab070c88444ab83290293debf29d5d9ca371",
"sha256:0e55a815caef1258ed7a9b0adad54e5f1b2ca63966d21342dc5da5b55dd471ef",
"sha256:2566a9db2c613fddddc22aedb45e74dbcd5c1a044da6992424680be719db80c9",
"sha256:34a3e8d27b84ccc9535086487eed50425c0db7a016bf91cf24d8d6cc853faec3",
"sha256:403109390f1a9856f8f6d5f0d5e7f2f83bdec99a62d024e433bff50eda2ed373",
"sha256:4dbd3e2262d080327a90e1ac9d087d7616e8b5be6da83be9fd3ca1b5ae575173",
"sha256:506f004ca08a2f43a898b65dad9d6dd2b2a4910ebe43dcc6682dc5ca0267c24a",
"sha256:662b95b6079b563d3e2ef4fda7bcb20e360901eae7a646425612ef2f4e5d6bdf",
"sha256:6de8d5ea0fc8cb780e060fc06a84328fda3ed329faf97606db59287814490ade",
"sha256:6f298068e2791b0ec5c420ef27cdf8aaba23486dfa5917b6c3067e30c97dde4f",
"sha256:7699c822197f98cc22c262af2368c99d69b43a73113099be52545b195c5e0064",
"sha256:7b75376d62a294e37d96507a68290dd94ce83f5b1a597c42d29242545e1ee126",
"sha256:98b16b4752f16b6a0562cfc1db2e6ce63b2a41ffa97c27e784c3ae5e8c2dc91d",
"sha256:bf57203ebeb4d718b34cd168f6b5ef497bfd2481adf848c5252faf38dccd7bf1",
"sha256:bf824aeff2cde789db1167c377573f1dbf2bf01e75eeb31651de00786ef09ed0",
"sha256:d3438bf0be646d61f8a60fb668c0c3b103963611462f35bf2db11ef50242f54f",
"sha256:d530ab882984188436f3869a2fc172086ab6b43a5f7502a86b241347a5441de3",
"sha256:e4be962e90035f362511eac65ad5c0242da15f73cfae27716de42b47f9d0a2a8",
"sha256:e5145fa63560901d7dbe26c5ee0dd5977f3783ab799fa04f50c50c207be78305",
"sha256:eb1a13c130a8a2ffc1c127a2bd581f45b9f10ec32a3892e41b5b1bdc9788b92d",
"sha256:ed798ab90f5230fe11079b269c3748bd875bc218c2ad4528ae2b4a04a0cd92b5",
"sha256:f55cf42cea67661ccea604b7774ba8cb1e467dadaf3d4c4b7f4e029faf43a46b"
],
"index": "pypi",
"markers": "python_version >= '3.6'",
"version": "==2.0.11"
},
"boto3": { "boto3": {
"hashes": [ "hashes": [
"sha256:b633e8fbf7145bdb995ce68a27d096bb89fd393185b0e773418d81cd78db5a03", "sha256:3faa2c328a61745f3215a63039606a6fcf55d9afe1cc76e3a5e27b9db58cdbf6",
"sha256:f2c11635be0de7b7c06eb606ece1add125e02d6ed521592294a0a21af09af135" "sha256:b998edac72f6740bd5d9d585cf3880f2dfeb4842e626b34430fd0e9623378011"
], ],
"index": "pypi", "index": "pypi",
"markers": "python_version >= '3.8'", "markers": "python_version >= '3.9'",
"version": "==1.34.105" "version": "==1.38.32"
}, },
"botocore": { "botocore": {
"hashes": [ "hashes": [
"sha256:727d5d3e800ac8b705fca6e19b6fefa1e728a81d62a712df9bd32ed0117c740b", "sha256:0899a090e352cb5eeaae2c7bb52a987b469d23912c7ece86664dfb5c2e074978",
"sha256:a459d060b541beecb50681e6e8a39313cca981e146a59ba7c5229d62f631a016" "sha256:64ab919a5d8b74dd73eaac1f978d0e674d11ff3bbe8815c3d2982477be9a082c"
], ],
"markers": "python_version >= '3.8'", "markers": "python_version >= '3.9'",
"version": "==1.34.105" "version": "==1.38.32"
}, },
"cffi": { "cffi": {
"hashes": [ "hashes": [
"sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc", "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8",
"sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a", "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2",
"sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417", "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1",
"sha256:2c56b361916f390cd758a57f2e16233eb4f64bcbeee88a4881ea90fca14dc6ab", "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15",
"sha256:2d92b25dbf6cae33f65005baf472d2c245c050b1ce709cc4588cdcdd5495b520", "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36",
"sha256:31d13b0f99e0836b7ff893d37af07366ebc90b678b6664c955b54561fc36ef36", "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824",
"sha256:32c68ef735dbe5857c810328cb2481e24722a59a2003018885514d4c09af9743", "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8",
"sha256:3686dffb02459559c74dd3d81748269ffb0eb027c39a6fc99502de37d501faa8", "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36",
"sha256:582215a0e9adbe0e379761260553ba11c58943e4bbe9c36430c4ca6ac74b15ed", "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17",
"sha256:5b50bf3f55561dac5438f8e70bfcdfd74543fd60df5fa5f62d94e5867deca684", "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf",
"sha256:5bf44d66cdf9e893637896c7faa22298baebcd18d1ddb6d2626a6e39793a1d56", "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc",
"sha256:6602bc8dc6f3a9e02b6c22c4fc1e47aa50f8f8e6d3f78a5e16ac33ef5fefa324", "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3",
"sha256:673739cb539f8cdaa07d92d02efa93c9ccf87e345b9a0b556e3ecc666718468d", "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed",
"sha256:68678abf380b42ce21a5f2abde8efee05c114c2fdb2e9eef2efdb0257fba1235", "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702",
"sha256:68e7c44931cc171c54ccb702482e9fc723192e88d25a0e133edd7aff8fcd1f6e", "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1",
"sha256:6b3d6606d369fc1da4fd8c357d026317fbb9c9b75d36dc16e90e84c26854b088", "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8",
"sha256:748dcd1e3d3d7cd5443ef03ce8685043294ad6bd7c02a38d1bd367cfd968e000", "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903",
"sha256:7651c50c8c5ef7bdb41108b7b8c5a83013bfaa8a935590c5d74627c047a583c7", "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6",
"sha256:7b78010e7b97fef4bee1e896df8a4bbb6712b7f05b7ef630f9d1da00f6444d2e", "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d",
"sha256:7e61e3e4fa664a8588aa25c883eab612a188c725755afff6289454d6362b9673", "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b",
"sha256:80876338e19c951fdfed6198e70bc88f1c9758b94578d5a7c4c91a87af3cf31c", "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e",
"sha256:8895613bcc094d4a1b2dbe179d88d7fb4a15cee43c052e8885783fac397d91fe", "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be",
"sha256:88e2b3c14bdb32e440be531ade29d3c50a1a59cd4e51b1dd8b0865c54ea5d2e2", "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c",
"sha256:8f8e709127c6c77446a8c0a8c8bf3c8ee706a06cd44b1e827c3e6a2ee6b8c098", "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683",
"sha256:9cb4a35b3642fc5c005a6755a5d17c6c8b6bcb6981baf81cea8bfbc8903e8ba8", "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9",
"sha256:9f90389693731ff1f659e55c7d1640e2ec43ff725cc61b04b2f9c6d8d017df6a", "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c",
"sha256:a09582f178759ee8128d9270cd1344154fd473bb77d94ce0aeb2a93ebf0feaf0", "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8",
"sha256:a6a14b17d7e17fa0d207ac08642c8820f84f25ce17a442fd15e27ea18d67c59b", "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1",
"sha256:a72e8961a86d19bdb45851d8f1f08b041ea37d2bd8d4fd19903bc3083d80c896", "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4",
"sha256:abd808f9c129ba2beda4cfc53bde801e5bcf9d6e0f22f095e45327c038bfe68e", "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655",
"sha256:ac0f5edd2360eea2f1daa9e26a41db02dd4b0451b48f7c318e217ee092a213e9", "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67",
"sha256:b29ebffcf550f9da55bec9e02ad430c992a87e5f512cd63388abb76f1036d8d2", "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595",
"sha256:b2ca4e77f9f47c55c194982e10f058db063937845bb2b7a86c84a6cfe0aefa8b", "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0",
"sha256:b7be2d771cdba2942e13215c4e340bfd76398e9227ad10402a8767ab1865d2e6", "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65",
"sha256:b84834d0cf97e7d27dd5b7f3aca7b6e9263c56308ab9dc8aae9784abb774d404", "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41",
"sha256:b86851a328eedc692acf81fb05444bdf1891747c25af7529e39ddafaf68a4f3f", "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6",
"sha256:bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0", "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401",
"sha256:c0f31130ebc2d37cdd8e44605fb5fa7ad59049298b3f745c74fa74c62fbfcfc4", "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6",
"sha256:c6a164aa47843fb1b01e941d385aab7215563bb8816d80ff3a363a9f8448a8dc", "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3",
"sha256:d8a9d3ebe49f084ad71f9269834ceccbf398253c9fac910c4fd7053ff1386936", "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16",
"sha256:db8e577c19c0fda0beb7e0d4e09e0ba74b1e4c092e0e40bfa12fe05b6f6d75ba", "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93",
"sha256:dc9b18bf40cc75f66f40a7379f6a9513244fe33c0e8aa72e2d56b0196a7ef872", "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e",
"sha256:e09f3ff613345df5e8c3667da1d918f9149bd623cd9070c983c013792a9a62eb", "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4",
"sha256:e4108df7fe9b707191e55f33efbcb2d81928e10cea45527879a4749cbe472614", "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964",
"sha256:e6024675e67af929088fda399b2094574609396b1decb609c55fa58b028a32a1", "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c",
"sha256:e70f54f1796669ef691ca07d046cd81a29cb4deb1e5f942003f401c0c4a2695d", "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576",
"sha256:e715596e683d2ce000574bae5d07bd522c781a822866c20495e52520564f0969", "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0",
"sha256:e760191dd42581e023a68b758769e2da259b5d52e3103c6060ddc02c9edb8d7b", "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3",
"sha256:ed86a35631f7bfbb28e108dd96773b9d5a6ce4811cf6ea468bb6a359b256b1e4", "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662",
"sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627", "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3",
"sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956", "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff",
"sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357" "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5",
"sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd",
"sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f",
"sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5",
"sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14",
"sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d",
"sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9",
"sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7",
"sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382",
"sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a",
"sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e",
"sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a",
"sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4",
"sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99",
"sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87",
"sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b"
], ],
"markers": "platform_python_implementation != 'PyPy'", "markers": "python_version >= '3.8'",
"version": "==1.16.0" "version": "==1.17.1"
}, },
"cryptography": { "cryptography": {
"hashes": [ "hashes": [
"sha256:02c0eee2d7133bdbbc5e24441258d5d2244beb31da5ed19fbb80315f4bbbff55", "sha256:00094838ecc7c6594171e8c8a9166124c1197b074cfca23645cee573910d76bc",
"sha256:0d563795db98b4cd57742a78a288cdbdc9daedac29f2239793071fe114f13785", "sha256:050ce5209d5072472971e6efbfc8ec5a8f9a841de5a4db0ebd9c2e392cb81972",
"sha256:16268d46086bb8ad5bf0a2b5544d8a9ed87a0e33f5e77dd3c3301e63d941a83b", "sha256:232954730c362638544758a8160c4ee1b832dc011d2c41a306ad8f7cccc5bb0b",
"sha256:1a58839984d9cb34c855197043eaae2c187d930ca6d644612843b4fe8513c886", "sha256:25286aacb947286620a31f78f2ed1a32cded7be5d8b729ba3fb2c988457639e4",
"sha256:2954fccea107026512b15afb4aa664a5640cd0af630e2ee3962f2602693f0c82", "sha256:2f8f8f0b73b885ddd7f3d8c2b2234a7d3ba49002b0223f58cfde1bedd9563c56",
"sha256:2e47577f9b18723fa294b0ea9a17d5e53a227867a0a4904a1a076d1646d45ca1", "sha256:38deed72285c7ed699864f964a3f4cf11ab3fb38e8d39cfcd96710cd2b5bb716",
"sha256:31adb7d06fe4383226c3e963471f6837742889b3c4caa55aac20ad951bc8ffda", "sha256:3ad69eeb92a9de9421e1f6685e85a10fbcfb75c833b42cc9bc2ba9fb00da4710",
"sha256:3577d029bc3f4827dd5bf8bf7710cac13527b470bbf1820a3f394adb38ed7d5f", "sha256:5555365a50efe1f486eed6ac7062c33b97ccef409f5970a0b6f205a7cfab59c8",
"sha256:36017400817987670037fbb0324d71489b6ead6231c9604f8fc1f7d008087c68", "sha256:555e5e2d3a53b4fabeca32835878b2818b3f23966a4efb0d566689777c5a12c8",
"sha256:362e7197754c231797ec45ee081f3088a27a47c6c01eff2ac83f60f85a50fe60", "sha256:57a6500d459e8035e813bd8b51b671977fb149a8c95ed814989da682314d0782",
"sha256:3de9a45d3b2b7d8088c3fbf1ed4395dfeff79d07842217b38df14ef09ce1d8d7", "sha256:5833bb4355cb377ebd880457663a972cd044e7f49585aee39245c0d592904578",
"sha256:4f698edacf9c9e0371112792558d2f705b5645076cc0aaae02f816a0171770fd", "sha256:71320fbefd05454ef2d457c481ba9a5b0e540f3753354fff6f780927c25d19b0",
"sha256:5482e789294854c28237bba77c4c83be698be740e31a3ae5e879ee5444166582", "sha256:7573d9eebaeceeb55285205dbbb8753ac1e962af3d9640791d12b36864065e71",
"sha256:5e44507bf8d14b36b8389b226665d597bc0f18ea035d75b4e53c7b1ea84583cc", "sha256:92d5f428c1a0439b2040435a1d6bc1b26ebf0af88b093c3628913dd464d13fa1",
"sha256:779245e13b9a6638df14641d029add5dc17edbef6ec915688f3acb9e720a5858", "sha256:97787952246a77d77934d41b62fb1b6f3581d83f71b44796a4158d93b8f5c490",
"sha256:789caea816c6704f63f6241a519bfa347f72fbd67ba28d04636b7c6b7da94b0b", "sha256:9bb5bf55dcb69f7067d80354d0a348368da907345a2c448b0babc4215ccd3497",
"sha256:7f8b25fa616d8b846aef64b15c606bb0828dbc35faf90566eb139aa9cff67af2", "sha256:9cc80ce69032ffa528b5e16d217fa4d8d4bb7d6ba8659c1b4d74a1b0f4235fca",
"sha256:8cb8ce7c3347fcf9446f201dc30e2d5a3c898d009126010cbd1f443f28b52678", "sha256:9e4253ed8f5948a3589b3caee7ad9a5bf218ffd16869c516535325fece163dcc",
"sha256:93a3209f6bb2b33e725ed08ee0991b92976dfdcf4e8b38646540674fc7508e13", "sha256:9eda14f049d7f09c2e8fb411dda17dd6b16a3c76a1de5e249188a32aeb92de19",
"sha256:a3a5ac8b56fe37f3125e5b72b61dcde43283e5370827f5233893d461b7360cd4", "sha256:a2b56de3417fd5f48773ad8e91abaa700b678dc7fe1e0c757e1ae340779acf7b",
"sha256:a47787a5e3649008a1102d3df55424e86606c9bae6fb77ac59afe06d234605f8", "sha256:af3f92b1dc25621f5fad065288a44ac790c5798e986a34d393ab27d2b27fcff9",
"sha256:a79165431551042cc9d1d90e6145d5d0d3ab0f2d66326c201d9b0e7f5bf43604", "sha256:c5edcb90da1843df85292ef3a313513766a78fbbb83f584a5a58fb001a5a9d57",
"sha256:a987f840718078212fdf4504d0fd4c6effe34a7e4740378e59d47696e8dfb477", "sha256:c824c9281cb628015bfc3c59335163d4ca0540d49de4582d6c2637312907e4b1",
"sha256:a9bc127cdc4ecf87a5ea22a2556cab6c7eda2923f84e4f3cc588e8470ce4e42e", "sha256:c92519d242703b675ccefd0f0562eb45e74d438e001f8ab52d628e885751fb06",
"sha256:bd13b5e9b543532453de08bcdc3cc7cebec6f9883e886fd20a92f26940fd3e7a", "sha256:ca932e11218bcc9ef812aa497cdf669484870ecbcf2d99b765d6c27a86000942",
"sha256:c65f96dad14f8528a447414125e1fc8feb2ad5a272b8f68477abbcc1ea7d94b9", "sha256:cb6ab89421bc90e0422aca911c69044c2912fc3debb19bb3c1bfe28ee3dff6ab",
"sha256:d8e3098721b84392ee45af2dd554c947c32cc52f862b6a3ae982dbb90f577f14", "sha256:cfd84777b4b6684955ce86156cfb5e08d75e80dc2585e10d69e47f014f0a5342",
"sha256:e6b79d0adb01aae87e8a44c2b64bc3f3fe59515280e00fb6d57a7267a2583cda", "sha256:d377dde61c5d67eb4311eace661c3efda46c62113ff56bf05e2d679e02aebb5b",
"sha256:e6b8f1881dac458c34778d0a424ae5769de30544fc678eac51c1c8bb2183e9da", "sha256:d54ae41e6bd70ea23707843021c778f151ca258081586f0cfa31d936ae43d1b2",
"sha256:e9b2a6309f14c0497f348d08a065d52f3020656f675819fc405fb63bbcd26562", "sha256:dc10ec1e9f21f33420cc05214989544727e776286c1c16697178978327b95c9c",
"sha256:ecbfbc00bf55888edda9868a4cf927205de8499e7fabe6c050322298382953f2", "sha256:ec21313dd335c51d7877baf2972569f40a4291b76a0ce51391523ae358d05899",
"sha256:efd0bf5205240182e0f13bcaea41be4fdf5c22c5129fc7ced4a0282ac86998c9" "sha256:ec64ee375b5aaa354b2b273c921144a660a511f9df8785e6d1c942967106438e",
"sha256:ed43d396f42028c1f47b5fec012e9e12631266e3825e95c00e3cf94d472dac49",
"sha256:edd6d51869beb7f0d472e902ef231a9b7689508e83880ea16ca3311a00bf5ce7",
"sha256:f22af3c78abfbc7cbcdf2c55d23c3e022e1a462ee2481011d518c7fb9c9f3d65",
"sha256:fae1e637f527750811588e4582988932c222f8251f7b7ea93739acb624e1487f",
"sha256:fed5aaca1750e46db870874c9c273cd5182a9e9deb16f06f7bdffdb5c2bde4b9"
], ],
"index": "pypi", "index": "pypi",
"markers": "python_version >= '3.7'", "markers": "python_version >= '3.7' and python_full_version not in '3.9.0, 3.9.1'",
"version": "==42.0.7" "version": "==45.0.3"
}, },
"jmespath": { "jmespath": {
"hashes": [ "hashes": [
@ -178,155 +168,64 @@
}, },
"pymysql": { "pymysql": {
"hashes": [ "hashes": [
"sha256:4f13a7df8bf36a51e81dd9f3605fede45a4878fe02f9236349fd82a3f0612f96", "sha256:4de15da4c61dc132f4fb9ab763063e693d521a80fd0e87943b9a453dd4c19d6c",
"sha256:8969ec6d763c856f7073c4c64662882675702efcb114b4bcbb955aea3a069fa7" "sha256:e127611aaf2b417403c60bf4dc570124aeb4a57f5f37b8e95ae399a42f904cd0"
], ],
"index": "pypi", "index": "pypi",
"markers": "python_version >= '3.7'", "markers": "python_version >= '3.7'",
"version": "==1.1.0" "version": "==1.1.1"
}, },
"python-dateutil": { "python-dateutil": {
"hashes": [ "hashes": [
"sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3",
"sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427" "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"
], ],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'",
"version": "==2.9.0.post0" "version": "==2.9.0.post0"
}, },
"s3transfer": { "s3transfer": {
"hashes": [ "hashes": [
"sha256:5683916b4c724f799e600f41dd9e10a9ff19871bf87623cc8f491cb4f5fa0a19", "sha256:0148ef34d6dd964d0d8cf4311b2b21c474693e57c2e069ec708ce043d2b527be",
"sha256:ceb252b11bcf87080fb7850a224fb6e05c8a776bab8f2b64b7f25b969464839d" "sha256:f5e6db74eb7776a37208001113ea7aa97695368242b364d73e91c981ac522177"
], ],
"markers": "python_version >= '3.8'", "markers": "python_version >= '3.9'",
"version": "==0.10.1" "version": "==0.13.0"
},
"simplejson": {
"hashes": [
"sha256:01f426ee9e3a2d205aa4c22c3da996b51f2de75c4199ef703258a28b304dea8c",
"sha256:03de1ec4ad734f28ca49b0a758b997d752be0d089ed30360157c4e8811999c8f",
"sha256:041dd69026284d10f035cefb4a75026d2cfcef31f31e62585eeb2b7776e7e047",
"sha256:05a668d4a93816fb8a644e90e7987aa3beeb9d2112ca50a474d41e6acb5bb88a",
"sha256:094275b1b8f003afce1167c8a674cd1ee2fd48c566632dac5d149901d5012ff8",
"sha256:097e48686e49026836ef384c7c10ca670acc023cb16a976a689c2eb6c1852df4",
"sha256:0cc9a47bf8cde85c99db5f4a919bb756e62427ade0f2e875a6ec89ae8492d486",
"sha256:0cdb5069870f7d26a34e5adc30672d0a7b26e652720530a023bb3a8d8a42e37f",
"sha256:0dcc54e7cfbd9674ec4ca181e26eaa5b038446601faeaa6c83d146ddef2f2652",
"sha256:16fbebfc38ad4285c256d2430797fd669b0437d090e985c6d443521d4303b133",
"sha256:1844d7782652f859d9648531778582d4842d80cfff8d334eb23bb8da0d22a1b0",
"sha256:2362c66d2c633925d90f2f177f05e0570d320d986130d34dff9ad6edbf7be8ac",
"sha256:29a86bc9c8a913a4e0ffab85c563a7505cdf4bd13fba05342f8314facc0b7586",
"sha256:2a6e5c0e0817fb20dbb880c83caebbd4ef39f1901f6f8e53b73a3c74de4e5172",
"sha256:2d1b47f768e1f4c1c8a9457effabed735939401e85c0ddcdf68444c88a9242e6",
"sha256:30e381471158290ccb79bd31e7bbda4c8f2cf7e1a5f6b557c1b97d6036ccd05b",
"sha256:313dfd911723dc3022fed7050a7b315d5d0681cd56eee08e44e2cbd39fd9ad81",
"sha256:32de1672f91a789cc9e1c36c406b2d75457a242d64e9e73a70b9b814ef00095e",
"sha256:340b7d085b4a5063aacb8664b1250e4a7426c16e1cc80705c548a229153af147",
"sha256:34d95ad8e27754f0d91917600d6ea273e05c82a71021f168c45be48637d9502f",
"sha256:3d549efc7e8f9a180c59462b124991b690ff25c235d5cf495c3246c66a7679cd",
"sha256:3dbfaa79b1c0efdb768392a19110f1aff793f3e8d43f57e292f46734b8affb45",
"sha256:44058bea97429cfa0d6fb1d8eb0736a77022f34a326d5bc64fd6fed8d9304571",
"sha256:46b8cc86204b51eddcf157cbaf3c44a20f24393030442af0909eeb961186cb67",
"sha256:47509775a5c41ec2a6cd17c9c00fc14965cad8e6670059663872ba5e39332f57",
"sha256:4b5df4ee48403885046c6f4fd8adc84c4ac0adec69482f22a17bd4ba52876341",
"sha256:544e5607142d66a469ecf78a3154ec0f915834dc3b8cfdb2677a78ca58319ad6",
"sha256:56d36f47bc7c7684504f0f18feb161a0b1162546b3622e45aa6155f8285180ac",
"sha256:5b217201efc007166e24e9a282007cc208a2d059350a7c5bd0b0303460ad3019",
"sha256:5c4f59dd358c3a99efa46d62dc1583be3a1c37171f5240c4cbdc2d5838870902",
"sha256:5d45ed9452a42064805143480397b586ea2ea322f4b8b69034c51181e7f38342",
"sha256:6197cfebe659ac802a686b5408494115a7062b45cdf37679c4d6a9d4f39649b7",
"sha256:65de5876e34780b43f92d9d2539de16ecc56d16f56e56e59b34adfa1cebe064f",
"sha256:676e8c182f8079851f12ae1cee2fcebe04def2da2a5703a9d747ab125af47732",
"sha256:682b202f56d9d9e1bb22eaca3e37321002223fd5ddef7189b9233e3c14079917",
"sha256:695da62e494e4689ab78fae173a78390a175b6a5ccc4292277ce0f8dba3945d5",
"sha256:6d65ea4582b47d77e9094c22eb0aeded0ebd96c1df86e988870b40c6514c6e21",
"sha256:706a7fc81ceeb321a1040d008b134056012188f95a5c31ad94fb03153b35cc84",
"sha256:7339bd6203351555c1e728acd601ba95ebce0f6041ebdb386e025f00af3f1769",
"sha256:7701a289d45fdfeb37f1d15cf638801cea439df667a613379443772a86e82936",
"sha256:7f27a079cb009ba569983061a50a9270b7e1d35f81e4eeaf0e26f8924027e550",
"sha256:827ddc3b3603f7d0421b054388da6face7871d800c4b3bbedeedc8778e4085ea",
"sha256:8ccc982197982cdda19e3e5ba4ef7f6ad6bed3eb39bb423bfbf7fa2cd29488ab",
"sha256:8f381747c2edebe3c750a571e55103bfcc33b2707a9b91ae033ab9ba718d976a",
"sha256:93ba80fbf959b5852554f23201a5f4b30885930c303546ffa883859a435ea3cf",
"sha256:9a50a9da1cf93e35f26c4ddee162abf3184a340339ec2d4001c34607b87e71b4",
"sha256:a1163bfe5d043c20adeb5c4c8e89dd1dd39b375c8ca6f1c1e35ec537ad7a12e7",
"sha256:a2285609b4edbf9957440642493788ebef6583042b3fb96217c2e71f29bc6d80",
"sha256:a255d30cda6334ba780eb40a56e8134efd3453948b995d3966e45212e34bf018",
"sha256:a3bba99178f1b25878752a8bc6da2f93fbae754ebd4914d2ac4b869b9fb24102",
"sha256:a56005332d70b8d02d476d4a85818b27b01e51dac1a21d5c1a1d8a5df2efb4a6",
"sha256:a89d7fe994b115f0a792e6673f387af3db812a1760d594abad51e0ea11d3e470",
"sha256:a8ac155e3fd3b54a63040df024e57e62c130b15a2fc66eff3c2a946f42beed52",
"sha256:ab5941e1fd509fc151258477ef4b663fe14c94f8faf3581827bf4b02080fd4ba",
"sha256:ab64f087c5863ac621b42e227e5a43bd9b28de581afe7be12ad96562b9be8203",
"sha256:ad37f25fd8dfbed80815c3281b82a165be2a74e663856b9a50099d18789987bc",
"sha256:b17026f3f349a6e87818cd3531e3bbb5cc78a6f4b2b6718f574a8e0512d71e08",
"sha256:b43d3c2e204d709af955bdb904ae127fe137363ace87fbf7dc8fe6017f7f8449",
"sha256:b482d1fdd8f860e743c7de8cd6dfe54fb9fe8cd6ccba29e2966912ac89e17b2f",
"sha256:b6c6cfc492710d8f0303705fa1ff7bb3d6a145f523384e45a6f3b13ada37021f",
"sha256:b9893852c559998f667e6434d2c2474518d4cdfd1b9cec8e57b3c9d577ba55c1",
"sha256:bd694c465cc61fa8e599355e535b6eb561279834d9883aeef08d0e86c44c300c",
"sha256:c0444423129df448788edc66a129bc7560ad7d6a661d74f0900959c0b44349a1",
"sha256:c37b092d29741096c4723f48924a80b1d3de62ca1de254ce88178fa083dd520c",
"sha256:ced906b172bfad62736a27cfafcb6e24bc9938533b0529ff8150f7926fe35b54",
"sha256:d0d3b9f7cee233368d92c89746dde74313abafaa3ec1f0c06a3f4f164dc27bcc",
"sha256:d5f67bffa6fc68e391b2250e1feb43d534ded64a7b918eb89cf7e3e679759d94",
"sha256:d9f0dfde448611f4f818da05f9b544a78f29355dc39151b0dad8e7c65c513e4f",
"sha256:da6dc0cb00ef1e1a8daf285074ca8b2bb89591170c42ceab0c37bcdb9adc802c",
"sha256:dc74a9ef4d61e18ee6f1886b6ef1fe285b1f432885288afacfb7402f7d469448",
"sha256:deb71e6166e4f1264174d78b5b88abd52b14c6649e6eabaf9cf93cb1c7362850",
"sha256:e042ae053e05fe193514d51d6b0f0243729961901e9a75f8b596bfaf69522c52",
"sha256:e2f87a483c4ab0bb2a9adc9ca09173e7f7cf3696e4fa67bd45a6b33181e57921",
"sha256:e2fa1ee5ca34ab2ecfbe3f7a7e952a1ecaebb5b4818f002b5b146324912ac3d5",
"sha256:e7d3f7cd57ce0c6a5bb8133f8ed5c3d1be0473a88b7d91a300626298f12d0999",
"sha256:edb334cab35dcd90eb563fdacb085f10e5dd0b1acb57fa43f8933308b42a8f88",
"sha256:efae49d0148ec68b6e012f1b9e19bd530f4dced378ba919e3e906ae2b829cc31",
"sha256:f1085cadec0f7e76377951d7a87744628c90ac6cc634fc97eecce0c4d41ec563",
"sha256:f15f56b3119fb71fa57eb4613bcd87eb7df6c2f3547de7d341853d3e50cef97e",
"sha256:f1b425a857ce52e651739314e4118fc68bd702ef983148b8fd5cb6f68bb6a020",
"sha256:f31e126204ec38f92dee119af87cf881044ef7dea6f7477ef774ed3d84199c24",
"sha256:f5e0a03e533313eee9437ccc6c4eab47369f17bc919b57df4a20ccd8bc85d8fd",
"sha256:f85d87986ca375b8305b5c4f166783b8db383a6469e8b99b8dba22878388f234",
"sha256:fa6fe8fa94a831886ee164ac03514f361e1387a62a1b9da32fde5c0c1f27fa8d",
"sha256:fb0f8b35c11fd8e4b924f974d331b20fa54555282451db7f2a3b24bd2d33cc11"
],
"markers": "python_version >= '2.5' and python_version not in '3.0, 3.1, 3.2, 3.3'",
"version": "==3.18.4"
}, },
"six": { "six": {
"hashes": [ "hashes": [
"sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274",
"sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"
], ],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'",
"version": "==1.16.0" "version": "==1.17.0"
}, },
"urllib3": { "urllib3": {
"hashes": [ "hashes": [
"sha256:34b97092d7e0a3a8cf7cd10e386f401b3737364026c45e622aa02903dffe0f07", "sha256:0ed14ccfbf1c30a9072c7ca157e4319b70d65f623e91e7b32fadb2853431016e",
"sha256:f8ecc1bba5667413457c529ab955bf8c67b45db799d159066261719e328580a0" "sha256:40c2dc0c681e47eb8f90e7e27bf6ff7df2e677421fd46756da1161c39ca70d32"
], ],
"markers": "python_version < '3.10'", "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'",
"version": "==1.26.18" "version": "==1.26.20"
} }
}, },
"develop": { "develop": {
"autopep8": { "autopep8": {
"hashes": [ "hashes": [
"sha256:1fa8964e4618929488f4ec36795c7ff12924a68b8bf01366c094fc52f770b6e7", "sha256:89440a4f969197b69a995e4ce0661b031f455a9f776d2c5ba3dbd83466931758",
"sha256:2bb76888c5edbcafe6aabab3c47ba534f5a2c2d245c2eddced4a30c4b4946357" "sha256:ce8ad498672c845a0c3de2629c15b635ec2b05ef8177a6e7c91c74f3e9b51128"
], ],
"index": "pypi", "index": "pypi",
"markers": "python_version >= '3.8'", "markers": "python_version >= '3.9'",
"version": "==2.1.0" "version": "==2.3.2"
}, },
"flake8": { "flake8": {
"hashes": [ "hashes": [
"sha256:33f96621059e65eec474169085dc92bf26e7b2d47366b70be2f67ab80dc25132", "sha256:1cbc62e65536f65e6d754dfe6f1bada7f5cf392d6f5db3c2b85892466c3e7c1a",
"sha256:a6dfbb75e03252917f2473ea9653f7cd799c3064e54d4c8140044c5c065f53c3" "sha256:c586ffd0b41540951ae41af572e6790dbd49fc12b3aa2541685d253d9bd504bd"
], ],
"index": "pypi", "index": "pypi",
"markers": "python_full_version >= '3.8.1'", "markers": "python_full_version >= '3.8.1'",
"version": "==7.0.0" "version": "==7.1.2"
}, },
"mccabe": { "mccabe": {
"hashes": [ "hashes": [
@ -338,11 +237,11 @@
}, },
"pycodestyle": { "pycodestyle": {
"hashes": [ "hashes": [
"sha256:41ba0e7afc9752dfb53ced5489e89f8186be00e599e712660695b7a75ff2663f", "sha256:46f0fb92069a7c28ab7bb558f05bfc0110dac69a0cd23c61ea0040283a9d78b3",
"sha256:44fe31000b2d866f2e41841b18528a505fbd7fef9017b04eff4e2648a0fadc67" "sha256:6838eae08bbce4f6accd5d5572075c63626a15ee3e6f842df996bf62f6d73521"
], ],
"markers": "python_version >= '3.8'", "markers": "python_version >= '3.8'",
"version": "==2.11.1" "version": "==2.12.1"
}, },
"pyflakes": { "pyflakes": {
"hashes": [ "hashes": [
@ -351,14 +250,6 @@
], ],
"markers": "python_version >= '3.8'", "markers": "python_version >= '3.8'",
"version": "==3.2.0" "version": "==3.2.0"
},
"tomli": {
"hashes": [
"sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc",
"sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"
],
"markers": "python_version < '3.11'",
"version": "==2.0.1"
} }
} }
} }

View File

@ -6,12 +6,11 @@ from constants import AWS_RESOURCE_S3, S3_RESPONSE_BODY, UTF8
class S3Resource: class S3Resource:
def __init__(self, bucket_name: str) -> None: def __init__(self, bucket_name: str) -> None:
self.__s3_resource = boto3.resource(AWS_RESOURCE_S3) self.__s3_client = boto3.client(AWS_RESOURCE_S3)
self.__s3_bucket = self.__s3_resource.Bucket(bucket_name) self.__s3_bucket = bucket_name
def get_object(self, object_key: str): def get_object(self, object_key: str):
s3_object = self.__s3_bucket.Object(object_key) response = self.__s3_client.get_object(Bucket=self.__s3_bucket, Key=object_key)
response = s3_object.get()
return response[S3_RESPONSE_BODY].read().decode(UTF8) return response[S3_RESPONSE_BODY].read().decode(UTF8)

View File

@ -0,0 +1,329 @@
import csv
import datetime
import io
import json
import logging
import os
import re
from zoneinfo import ZoneInfo
import boto3
from dateutil.relativedelta import relativedelta
# 環境変数
CONFIG_BUCKET_NAME = os.environ["CONFIG_BUCKET_NAME"]
MBJ_NOTICE_TOPIC = os.environ["MBJ_NOTICE_TOPIC"]
PROCESSED_MESSAGE_DYNAMODB_TABLE_NAME = os.environ["PROCESSED_MESSAGE_DYNAMODB_TABLE_NAME"]
PROCESSED_MESSAGE_EXPIRES_PERIOD = int(os.environ["PROCESSED_MESSAGE_EXPIRES_PERIOD"])
LOG_LEVEL = os.environ["LOG_LEVEL"]
TZ = os.environ["TZ"]
# 定数
ROW_COMMENT_SYMBOL = '#'
INDEX_REGEX = 0
INDEX_DATA_NAME = 1
INDEX_ROW_COMMENT_SYMBOL = 0
INDEX_SPLIT_NUM = 1
INDEX_LAST = -1
# メール本文に出力する不足ファイル名一覧のインデント
MAIL_INDENT = '  '
# AWS操作クライアント
s3_client = boto3.client('s3')
sns_client = boto3.client('sns')
dynamodb_client = boto3.client('dynamodb')
# logger設定
def log_datetime_convert_tz(*arg):
"""ログに出力するタイムスタンプのロケールを変更するJST指定"""
return datetime.datetime.now(ZoneInfo(TZ)).timetuple()
logger = logging.getLogger()
formatter = logging.Formatter(
'[%(levelname)s]\t%(asctime)s\t%(message)s\n',
'%Y-%m-%d %H:%M:%S'
)
formatter.converter = log_datetime_convert_tz
for handler in logger.handlers:
handler.setFormatter(formatter)
level = logging.getLevelName(LOG_LEVEL)
if not isinstance(level, int):
level = logging.INFO
logger.setLevel(level)
def is_duplicate_message(message_id: str) -> bool:
"""DynamoDBテーブルに処理済みのSQSメッセージIdが存在するかどうかを調査する
Args:
message_id (str): SQSメッセージId
Returns:
bool: 存在する場合はTrue
"""
return dynamodb_client.query(
TableName=PROCESSED_MESSAGE_DYNAMODB_TABLE_NAME,
Select='COUNT',
KeyConditionExpression='message_id = :message_id',
ExpressionAttributeValues={
':message_id': {'S': message_id}
}
)["Count"] != 0
def put_success_messages_to_dynamo_db(batch_success_items: list[str]) -> bool:
"""処理済みのSQSメッセージIdをDynamoDBにPushする
Args:
batch_success_items (list[str]): SQSメッセージIdのリスト
Returns:
bool: 登録成功の場合True
"""
# レコードの有効期限を算出
now = datetime.datetime.now(ZoneInfo(TZ))
record_expiration_datetime = now + \
datetime.timedelta(minutes=PROCESSED_MESSAGE_EXPIRES_PERIOD)
record_expiration_time = record_expiration_datetime.timestamp()
for message_id in batch_success_items:
dynamodb_client.put_item(
TableName=PROCESSED_MESSAGE_DYNAMODB_TABLE_NAME,
Item={
'message_id': {'S': message_id},
'record_expiration_time': {'N': f'{record_expiration_time}'}
}
)
return True
def substitute_mail_template(mail_template: str, mail_msg: str) -> str:
"""メールテンプレートのプレースホルダーを置き換える
Args:
mail_template (str): 置き換え前のメールテンプレート
mail_msg (str): メールテンプレートのプレースホルダーを置き換える文言(ファイル一覧)
Returns:
str: 置き換え後のメール本文
"""
substitute_dict = {
"notice_file_names": mail_msg
}
mail_str = mail_template.format_map(substitute_dict)
return mail_str
def make_failure_item_on_error(message_id: str) -> dict[str, str]:
"""Report batch item failuresによる処理に失敗したメッセージの判別のためのレスポンスを作成する
@see <https://docs.aws.amazon.com/lambda/latest/dg/with-sqs.html#services-sqs-batchfailurereporting>
Args:
message_id (str): SQSメッセージId
Returns:
dict[str, str]: Report batch item failuresで失敗したSQSメッセージを判別するための辞書オブジェクト
"""
return {"itemIdentifier": message_id}
def daily_data_unreceive_check(records: list, execute_date: str) -> tuple[list[dict[str, str]], list[str]]:
"""日次データ未受領チェック
Args:
records (list): SQS Eventのレコードリスト
execute_date (str): 処理稼働年月日
Returns:
tuple[list[dict[str, str]], list[str]]: 失敗メッセージIdのリスト, 成功メッセージIdのリスト
"""
batch_failed_items = []
batch_success_items = []
for record in records:
# メール挿入用文言を格納するためのメモリを保持する
mail_message = ''
try:
# SQSパラメータをJSONシリアライズし、Pythonの辞書オブジェクト(イベントパラメータ)を取得する。
event_parameter = json.loads(record['body'])
receive_date = execute_date.strftime('%Y/%m/%d')
try:
# 1.SQSメッセージIDを取得する
message_id = record["messageId"]
# 2.DynamoDBテーブルからレコードを取得し、処理済みメッセージかどうかを判別する
if is_duplicate_message(message_id):
logger.info(f'I-02-02 受信したメッセージは既に処理済みのため、処理をスキップします。メッセージID: {message_id} データソース バケットディレクトリ: {event_parameter["check_bucket_name"]}/{event_parameter["check_folder_prefix"]}/')
continue
except Exception as e:
logger.exception(f"E-02-01 メッセージ重複チェック処理に失敗しました エラー内容:{e}")
batch_failed_items.append(make_failure_item_on_error(message_id))
continue
# ③ 設定ファイル[受領チェック対象ファイルリスト]を読み込む
try:
logger.info('I-03-01 ' +'受領チェック対象ファイルリスト読込 読込元:' + f'{CONFIG_BUCKET_NAME}/{event_parameter["check_target_file_list"]}')
check_target_file_list_response = s3_client.get_object(
Bucket=CONFIG_BUCKET_NAME,
Key=f'{event_parameter["check_target_file_list"]}'
)
logger.info('I-03-02 受領チェック対象ファイルリストを読み込みました')
except Exception as e:
logger.exception(f"E-03-01 受領チェック対象ファイルリストの読み込みに失敗しました エラー内容:{e} 読込元:{CONFIG_BUCKET_NAME}/{event_parameter["check_target_file_list"]}")
batch_failed_items.append(make_failure_item_on_error(message_id))
continue
# ④ 受領チェック処理を行う
logger.info(f'I-04-01 日次データ受領チェック ({event_parameter['data_source_name']}) 処理開始')
object_prefix = f'{event_parameter["check_folder_prefix"]}/{receive_date}/'
# 1.日次データバックアップ保管バケットの処理稼働月に該当するサブフォルダにあるファイル一覧を取得する
logger.info(f'I-04-02 オブジェクトリストの取得 取得先:{event_parameter['check_bucket_name']}/{object_prefix}')
receive_file_list_response = s3_client.list_objects_v2(Bucket=event_parameter['check_bucket_name'], Prefix=object_prefix)
receive_file_list = []
for content in receive_file_list_response.get('Contents', []):
# オブジェクトのキーからファイル名を切り出してリストに追加
obj_key = content['Key'].rsplit('/', INDEX_SPLIT_NUM)
receive_file_list.append(obj_key[INDEX_LAST])
# 2.I/Fファイルチェック処理
logger.info(f'I-04-03 日次受信データ({event_parameter['data_source_name']}) 未受領チェック処理開始')
check_target_file_name_body = io.TextIOWrapper(io.BytesIO(
check_target_file_list_response["Body"].read()), encoding='utf-8')
match_count = 0
row_count = 0
for tsv_row in csv.reader(check_target_file_name_body, delimiter='\t'):
# 「④1.」で取得したリストが「③」で読み込んだファイル内に存在するか確認する
is_file_not_exists = True
for file_name in receive_file_list:
match_result = re.fullmatch(tsv_row[INDEX_REGEX], file_name)
# 「③」で読み込んだファイルに記載されている全てが「④1.」で取得したリストに存在した場合
if match_result is not None:
is_file_not_exists = False
logger.info(f'I-04-04 I/Fファイルの受領を確認しました ファイル名{file_name}')
match_count += 1
if is_file_not_exists:
logger.info(f'I-04-06 I/Fファイルに不足があります ファイル名{tsv_row[INDEX_DATA_NAME]}')
mail_message += f'{MAIL_INDENT}{tsv_row[INDEX_DATA_NAME]}\n'
row_count += 1
if row_count == match_count:
logger.info('I-04-05 I/Fファイルは全て受領していることを確認しました')
# ⑤ 「①」でメモリ保持しているメール挿入用文言に出力内容が存在するか確認する
logger.info('I-05-01 メール送信処理開始')
if len(mail_message) == 0:
logger.info(
f'I-05-09 {execute_date} {event_parameter["data_source_name"]}データI/Fファイルに不足が無いため、メール送信処理をスキップします')
batch_success_items.append(message_id)
continue
# 1.存在した場合
logger.info(f'I-05-02 {execute_date} {event_parameter["data_source_name"]} データI/Fファイルに不足があるため、メール送信処理を開始します')
try:
logger.info('I-05-03 ' +f'通知メール(タイトル)テンプレートファイル読込 読込元:{CONFIG_BUCKET_NAME}/{event_parameter["notice_mail_title_template"]}')
mail_title_response = s3_client.get_object(
Bucket=CONFIG_BUCKET_NAME,
Key=f'{event_parameter["notice_mail_title_template"]}'
)
mail_title_template = (mail_title_response['Body'].read().decode('utf-8'))
# 改行を取り除く
mail_title_without_line_break = mail_title_template.splitlines()[0]
logger.info('I-05-04 通知メール(タイトル)テンプレートファイルを読み込みました')
except Exception as e:
logger.exception(
f'E-05-01 通知メール(タイトル)テンプレートファイルの読み込みに失敗しました エラー内容:{e} 読込元:{CONFIG_BUCKET_NAME}/{event_parameter["notice_mail_title_template"]}')
batch_failed_items.append(
make_failure_item_on_error(message_id))
continue
try:
logger.info('I-05-05 ' +f'通知メール(本文)テンプレートファイル読込 読込元:{CONFIG_BUCKET_NAME}/{event_parameter["notice_mail_body_template"]}')
mail_body_template_response = s3_client.get_object(
Bucket=CONFIG_BUCKET_NAME,
Key=f'{event_parameter["notice_mail_body_template"]}'
)
mail_body_template = (mail_body_template_response['Body'].read().decode('utf-8'))
# メール本文内のプレースホルダーを置き換える
mail_body = substitute_mail_template(mail_body_template, mail_message)
logger.info('I-05-06 通知メール(本文)テンプレートファイルを読み込みました')
except Exception as e:
logger.exception(f'E-05-02 通知メール(本文)テンプレートファイルの読み込みに失敗しました エラー内容:{e} 読込元:{CONFIG_BUCKET_NAME}/{event_parameter["notice_mail_body_template"]}')
batch_failed_items.append(make_failure_item_on_error(message_id))
continue
logger.info(f'I-05-07 メール送信指示をします 送信先トピック:{MBJ_NOTICE_TOPIC}')
params = {
'TopicArn': MBJ_NOTICE_TOPIC,
'Subject': mail_title_without_line_break,
'Message': mail_body
}
sns_client.publish(**params)
logger.info('I-05-08 メール送信指示をしました')
batch_success_items.append(message_id)
except Exception as e:
logger.exception(f'E-99 想定外のエラーが発生しました エラー内容:{e}')
batch_failed_items.append(make_failure_item_on_error(message_id))
continue
return batch_failed_items, batch_success_items
def lambda_handler(event, context):
try:
# ① 処理開始ログを出力する
logger.info('I-01-01 処理開始 日次データ受領チェック処理')
# 処理稼働年月を取得しメモリに保持する
execute_date = datetime.date.today()
# 処理成功メッセージIDリストをメモリに保持する初期値空のリスト
batch_success_items = []
# 処理失敗メッセージIDリストをメモリに保持する初期値空のリスト
batch_failed_items = []
# ② SQSメッセージ重複排除処理を行う
logger.info('I-02-01 メッセージ処理開始')
batch_failed_items, batch_success_items = daily_data_unreceive_check(event["Records"], execute_date)
logger.info('I-06-01 すべてのメッセージの処理完了')
# ⑦ メッセージを処理済として、以下のDynamoDBテーブルに記録する
put_success_messages_to_dynamo_db(batch_success_items)
logger.info('I-07-01 処理済みメッセージIDの記録完了')
logger.info('I-07-02 処理終了 日次データ受領チェック処理')
except Exception as e:
logger.exception(f'E-99 想定外のエラーが発生しました エラー内容:{e}')
raise e
return batch_failed_items
# 動作確認用のコード
# if __name__ == '__main__':
# lambda_handler({
# "Records": [
# {
# "messageId": "19dd0b57-b21e-4ac1-bd88-01bbb068cb78",
# "receiptHandle": "MessageReceiptHandle",
# "body": "{\"data_source_name\":\"data_source_name\",\"check_bucket_name\":\"check_bucket_name\",\"check_folder_prefix\":\"check_folder_prefix\",\"check_target_file_list\":\"check_target_file_list\",\"notice_mail_title_template\":\"notice_mail_title_template\",\"notice_mail_body_template\":\"notice_mail_body_template\"\r\n}",
# "attributes": {
# "ApproximateReceiveCount": "1",
# "SentTimestamp": "1523232000000",
# "SenderId": "123456789012",
# "ApproximateFirstReceiveTimestamp": "1523232000001"
# },
# "messageAttributes": {},
# "md5OfBody": "{{{md5_of_body}}}",
# "eventSource": "aws:sqs",
# "eventSourceARN": "arn:aws:sqs:us-east-1:123456789012:MyQueue",
# "awsRegion": "us-east-1"
# }
# ]
# }, {})

View File

@ -8,8 +8,9 @@ import boto3
sns_client = boto3.client('sns') sns_client = boto3.client('sns')
def lambda_handler(event, context): def lambda_handler(event, context):
awslogs_dict = event.get('awslogs') awslogs_dict = event.get('awslogs')
base64_data = awslogs_dict.get('data') base64_data = awslogs_dict.get('data')
try: try:
decoded_gzip_data = base64.b64decode(base64_data) decoded_gzip_data = base64.b64decode(base64_data)
@ -18,12 +19,16 @@ def lambda_handler(event, context):
log_event_str = gzip.GzipFile(fileobj=BytesIO(decoded_gzip_data)).read() log_event_str = gzip.GzipFile(fileobj=BytesIO(decoded_gzip_data)).read()
log_event = json.loads(log_event_str) log_event = json.loads(log_event_str)
# SNSのSubjectパラメータは100文字までという制限があるため、100文字に切り出す(切り捨てた分は「...」に変換)
subject = f'Detect Error(or Warning) in {log_event.get("logGroup")}'
subject = subject[:97] + '...' if len(subject) > 100 else subject
publish_message = { publish_message = {
'Subject': f'Detect Error(or Warning) in {log_event.get("logGroup")}', 'Subject': subject,
'Message': '\n'.join([log.get('message') for log in log_event.get('logEvents')]), 'Message': '\n'.join([log.get('message') for log in log_event.get('logEvents')]),
'TopicArn': os.environ.get('SNS_TOPIC_ARN') 'TopicArn': os.environ.get('SNS_TOPIC_ARN')
} }
print(publish_message) print(publish_message)
sns_client.publish(**publish_message) sns_client.publish(**publish_message)

View File

@ -1,17 +1,26 @@
FROM python:3.9 FROM python:3.12-slim-bookworm
ENV TZ="Asia/Tokyo" ENV TZ="Asia/Tokyo"
# pythonの標準出力をバッファリングしないフラグ
ENV PYTHONUNBUFFERED=1
# pythonのバイトコードを生成しないフラグ
ENV PYTHONDONTWRITEBYTECODE=1
# 必要なファイルをイメージにコピー
WORKDIR /function WORKDIR /function
COPY requirements.txt ./ COPY Pipfile Pipfile.lock ./
RUN \
apt update -y && \ # ライブラリインストール
# パッケージのセキュリティアップデートのみを適用するコマンド RUN apt update -y && \
apt install -y unattended-upgrades && \ apt-get -y install gnupg2 && \
unattended-upgrades && \ pip install pipenv --no-cache-dir && \
pip install --upgrade pip wheel setuptools && \ pipenv install --system --deploy && \
pip install --no-cache-dir -r requirements.txt pip uninstall -y pipenv virtualenv-clone virtualenv
COPY datadecrypt ./ COPY datadecrypt ./
# エントリーポイントの設定
ENTRYPOINT [ "/usr/local/bin/python", "-m", "awslambdaric" ] ENTRYPOINT [ "/usr/local/bin/python", "-m", "awslambdaric" ]
# lambdaハンドラを起動
CMD [ "main.handler" ] CMD [ "main.handler" ]

View File

@ -0,0 +1,16 @@
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"
[packages]
boto3 = "*"
python-gnupg = "*"
awslambdaric = "*"
[dev-packages]
autopep8 = "*"
flake8 = "*"
[requires]
python_version = "3.12"

281
lambda/sap-data-decrypt/Pipfile.lock generated Normal file
View File

@ -0,0 +1,281 @@
{
"_meta": {
"hash": {
"sha256": "1a02067c1f004e5d31364e9631ef0cefbe083f9c667e82317ebda4bda9b2133e"
},
"pipfile-spec": 6,
"requires": {
"python_version": "3.12"
},
"sources": [
{
"name": "pypi",
"url": "https://pypi.org/simple",
"verify_ssl": true
}
]
},
"default": {
"awslambdaric": {
"hashes": [
"sha256:09ba762169869c576f8842d2b08fa6e30254494eabe533eb77efef0e38af33fa",
"sha256:0b30fd0b2e62c46c268eaf316c3bc77ba6d3900caea3c81cdf211952062e118f",
"sha256:134b5132803094ce0488f2b3e071745f09779c583371e84bc5979c21a5bac46a",
"sha256:1c1fd30570b9a2c5cc4ccd2151c883312c5eef2dbf759c8e9d29c18cec6de2e8",
"sha256:2cd110915f17967bfc39079c37efd7f9ca65eedb049c79f5203f02dcb3a514fc",
"sha256:329bd2e09d6a8257b9a7ff386d9956783ec905bba4c00ea2f841fbc89246910e",
"sha256:37159c9f67d5cced4dcf72963d29dcac48b214f601931d15b78f58a1336c9dc5",
"sha256:4972127ef34729c44c9567148e68a4eacc283d685400f9d08bf51138ac4ee3d5",
"sha256:537e4986f723cb981af01d031743c9ae09b9ddc497d2582a548da0d696c81809",
"sha256:6c8ecbcf05cf02f1bd263a0831b1acf3c29cd9296cb72e74067de71185f6c118",
"sha256:755db7118d1ed900a675a2608ea9c48c463949ede5cc91648c542a5ec89df4ed",
"sha256:7b7e44922dc4f22cdc9462d5eb41b43f8edfd4ec091f26b91bcbd9eec9c0e368",
"sha256:84855b22f2dfb68f1180ea9acbd18e5b636aed02d45e88d7bdfbf10551ba5658",
"sha256:889b4bb6e9d88aab26d67cce7f9212aafa1f53c64eca2dc83cdf42a79eb3e6ec",
"sha256:9bb003f14f3754a3d6912e3a478cf3a306b84febdc26b612fe23c1143a89f0fd",
"sha256:a5860d96e08cc4bab5bd4d7a2cd5eeb10ea17d0269fe4c1b7c57ac8d06abbf70",
"sha256:a7066867f704675c65da522ee28174d674b847f7df9479eb7f60cbba2ab85e09",
"sha256:a9d0d3de5a3fd9b2d8496b07e30b471b74d6a7839c878bef89419db0dae8795e",
"sha256:ad2ff7352517b590ca5748f75b9b9df906b111139753f35bcb069f25c14d3c94",
"sha256:dc30e9b674828b4d00f703f7774e1bc6e78f8cc1b7fd577e583d66e1c62734ea",
"sha256:fbe854813e5a1bac7d68cc05827dbcf5eb7fd2158ec2e6972d5643d00c3f3f61"
],
"index": "pypi",
"markers": "python_version >= '3.9'",
"version": "==3.1.1"
},
"boto3": {
"hashes": [
"sha256:3faa2c328a61745f3215a63039606a6fcf55d9afe1cc76e3a5e27b9db58cdbf6",
"sha256:b998edac72f6740bd5d9d585cf3880f2dfeb4842e626b34430fd0e9623378011"
],
"index": "pypi",
"markers": "python_version >= '3.9'",
"version": "==1.38.32"
},
"botocore": {
"hashes": [
"sha256:0899a090e352cb5eeaae2c7bb52a987b469d23912c7ece86664dfb5c2e074978",
"sha256:64ab919a5d8b74dd73eaac1f978d0e674d11ff3bbe8815c3d2982477be9a082c"
],
"markers": "python_version >= '3.9'",
"version": "==1.38.32"
},
"jmespath": {
"hashes": [
"sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980",
"sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe"
],
"markers": "python_version >= '3.7'",
"version": "==1.0.1"
},
"python-dateutil": {
"hashes": [
"sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3",
"sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"
],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'",
"version": "==2.9.0.post0"
},
"python-gnupg": {
"hashes": [
"sha256:40ce25cde9df29af91fe931ce9df3ce544e14a37f62b13ca878c897217b2de6c",
"sha256:f2fdb5fb29615c77c2743e1cb3d9314353a6e87b10c37d238d91ae1c6feae086"
],
"index": "pypi",
"version": "==0.5.4"
},
"s3transfer": {
"hashes": [
"sha256:0148ef34d6dd964d0d8cf4311b2b21c474693e57c2e069ec708ce043d2b527be",
"sha256:f5e6db74eb7776a37208001113ea7aa97695368242b364d73e91c981ac522177"
],
"markers": "python_version >= '3.9'",
"version": "==0.13.0"
},
"simplejson": {
"hashes": [
"sha256:000602141d0bddfcff60ea6a6e97d5e10c9db6b17fd2d6c66199fa481b6214bb",
"sha256:03d7a426e416fe0d3337115f04164cd9427eb4256e843a6b8751cacf70abc832",
"sha256:03db8cb64154189a92a7786209f24e391644f3a3fa335658be2df2af1960b8d8",
"sha256:03ec618ed65caab48e81e3ed29586236a8e57daef792f1f3bb59504a7e98cd10",
"sha256:0821871404a537fd0e22eba240c74c0467c28af6cc435903eca394cfc74a0497",
"sha256:1190f9a3ce644fd50ec277ac4a98c0517f532cfebdcc4bd975c0979a9f05e1fb",
"sha256:15c7de4c88ab2fbcb8781a3b982ef883696736134e20b1210bca43fb42ff1acf",
"sha256:1b9fd15853b90aec3b1739f4471efbf1ac05066a2c7041bf8db821bb73cd2ddc",
"sha256:1bd6bfe5678d73fbd5328eea6a35216503796428fc47f1237432522febaf3a0c",
"sha256:272cc767826e924a6bd369ea3dbf18e166ded29059c7a4d64d21a9a22424b5b5",
"sha256:299b1007b8101d50d95bc0db1bf5c38dc372e85b504cf77f596462083ee77e3f",
"sha256:2b6436c48e64378fa844d8c9e58a5ed0352bbcfd4028369a9b46679b7ab79d2d",
"sha256:2e671dd62051129185d3a9a92c60101f56cbc174854a1a3dfb69114ebd9e1699",
"sha256:325b8c107253d3217e89d7b50c71015b5b31e2433e6c5bf38967b2f80630a8ca",
"sha256:339f407373325a36b7fd744b688ba5bae0666b5d340ec6d98aebc3014bf3d8ea",
"sha256:3466d2839fdc83e1af42e07b90bc8ff361c4e8796cd66722a40ba14e458faddd",
"sha256:391345b4157cc4e120027e013bd35c45e2c191e2bf48b8913af488cdc3b9243c",
"sha256:3c4f0a61cdc05550782ca4a2cdb311ea196c2e6be6b24a09bf71360ca8c3ca9b",
"sha256:3d7310172d5340febd258cb147f46aae30ad57c445f4d7e1ae8461c10aaf43b0",
"sha256:3e7963197d958fcf9e98b212b80977d56c022384621ff463d98afc3b6b1ce7e8",
"sha256:455a882ff3f97d810709f7b620007d4e0aca8da71d06fc5c18ba11daf1c4df49",
"sha256:463f1fca8fbf23d088e5850fdd0dd4d5faea8900a9f9680270bd98fd649814ca",
"sha256:4762e05577955312a4c6802f58dd02e040cc79ae59cda510aa1564d84449c102",
"sha256:489c3a43116082bad56795215786313832ba3991cca1f55838e52a553f451ab6",
"sha256:49d059b8363327eee3c94799dd96782314b2dbd7bcc293b4ad48db69d6f4d362",
"sha256:4a586ce4f78cec11f22fe55c5bee0f067e803aab9bad3441afe2181693b5ebb5",
"sha256:4a8e197e4cf6d42c2c57e7c52cd7c1e7b3e37c5911df1314fb393320131e2101",
"sha256:4a92e948bad8df7fa900ba2ba0667a98303f3db206cbaac574935c332838208e",
"sha256:51b41f284d603c4380732d7d619f8b34bd04bc4aa0ed0ed5f4ffd0539b14da44",
"sha256:5c0de368f3052a59a1acf21f8b2dd28686a9e4eba2da7efae7ed9554cb31e7bc",
"sha256:627d4486a1ea7edf1f66bb044ace1ce6b4c1698acd1b05353c97ba4864ea2e17",
"sha256:652d8eecbb9a3b6461b21ec7cf11fd0acbab144e45e600c817ecf18e4580b99e",
"sha256:69dd28d4ce38390ea4aaf212902712c0fd1093dc4c1ff67e09687c3c3e15a749",
"sha256:6a6dd11ee282937ad749da6f3b8d87952ad585b26e5edfa10da3ae2536c73078",
"sha256:6bd09c8c75666e7f62a33d2f1fb57f81da1fcbb19a9fe7d7910b5756e1dd6048",
"sha256:6c21f5c026ca633cfffcb6bc1fac2e99f65cb2b24657d3bef21aed9916cc3bbf",
"sha256:6d4f320c33277a5b715db5bf5b10dae10c19076bd6d66c2843e04bd12d1f1ea5",
"sha256:6dd3a1d5aca87bf947f3339b0f8e8e329f1badf548bdbff37fac63c17936da8e",
"sha256:6e18345c8dda5d699be8166b61f9d80aaee4545b709f1363f60813dc032dac53",
"sha256:6e6697a3067d281f01de0fe96fc7cba4ea870d96d7deb7bfcf85186d74456503",
"sha256:71b75d448fd0ceb2e7c90e72bb82c41f8462550d48529980bc0bab1d2495bfbb",
"sha256:71e849e7ceb2178344998cbe5ade101f1b329460243c79c27fbfc51c0447a7c3",
"sha256:74a1608f9e6e8c27a4008d70a54270868306d80ed48c9df7872f9f4b8ac87808",
"sha256:7551682b60bba3a9e2780742e101cf0a64250e76de7d09b1c4b0c8a7c7cc6834",
"sha256:76461ec929282dde4a08061071a47281ad939d0202dc4e63cdd135844e162fbc",
"sha256:78520f04b7548a5e476b5396c0847e066f1e0a4c0c5e920da1ad65e95f410b11",
"sha256:7ceed598e4bacbf5133fe7a418f7991bb2df0683f3ac11fbf9e36a2bc7aa4b85",
"sha256:7e9d73f46119240e4f4f07868241749d67d09873f40cb968d639aa9ccc488b86",
"sha256:7eaae2b88eb5da53caaffdfa50e2e12022553949b88c0df4f9a9663609373f72",
"sha256:87fc623d457173a0213bc9ca4e346b83c9d443f63ed5cca847fb0cacea3cfc95",
"sha256:884e6183d16b725e113b83a6fc0230152ab6627d4d36cb05c89c2c5bccfa7bc6",
"sha256:88a7baa8211089b9e58d78fbc1b0b322103f3f3d459ff16f03a36cece0d0fcf0",
"sha256:896a6c04d7861d507d800da7642479c3547060bf97419d9ef73d98ced8258766",
"sha256:8a6c1bbac39fa4a79f83cbf1df6ccd8ff7069582a9fd8db1e52cea073bc2c697",
"sha256:8bb98fdf318c05aefd08a92583bd6ee148e93c6756fb1befb7b2d5f27824be78",
"sha256:8c09948f1a486a89251ee3a67c9f8c969b379f6ffff1a6064b41fea3bce0a112",
"sha256:8d23b7f8d6b72319d6d55a0261089ff621ce87e54731c2d3de6a9bf7be5c028c",
"sha256:90b573693d1526bed576f6817e2a492eaaef68f088b57d7a9e83d122bbb49e51",
"sha256:9a74e70818818981294b8e6956ce3496c5e1bd4726ac864fae473197671f7b85",
"sha256:9c079606f461a6e950099167e21e13985147c8a24be8eea66c9ad68f73fad744",
"sha256:9daf8cdc7ee8a9e9f7a3b313ba0a003391857e90d0e82fbcd4d614aa05cb7c3b",
"sha256:9e8eacf6a3491bf76ea91a8d46726368a6be0eb94993f60b8583550baae9439e",
"sha256:9faceb68fba27ef17eda306e4cd97a7b4b14fdadca5fbb15790ba8b26ebeec0c",
"sha256:a2cc4f6486f9f515b62f5831ff1888886619b84fc837de68f26d919ba7bbdcbc",
"sha256:a3c2df555ee4016148fa192e2b9cd9e60bc1d40769366134882685e90aee2a1e",
"sha256:a7e15b716d09f318c8cda3e20f82fae81684ce3d3acd1d7770fa3007df1769de",
"sha256:a8011f1dd1d676befcd4d675ebdbfdbbefd3bf350052b956ba8c699fca7d8cef",
"sha256:ab19c2da8c043607bde4d4ef3a6b633e668a7d2e3d56f40a476a74c5ea71949f",
"sha256:ab980fcc446ab87ea0879edad41a5c28f2d86020014eb035cf5161e8de4474c6",
"sha256:ae6e637dc24f8fee332ed23dd070e81394138e42cd4fd9d0923e5045ba122e27",
"sha256:ae81e482476eaa088ef9d0120ae5345de924f23962c0c1e20abbdff597631f87",
"sha256:af8377a8af78226e82e3a4349efdde59ffa421ae88be67e18cef915e4023a595",
"sha256:b122a19b552b212fc3b5b96fc5ce92333d4a9ac0a800803e1f17ebb16dac4be5",
"sha256:b2578bedaedf6294415197b267d4ef678fea336dd78ee2a6d2f4b028e9d07be3",
"sha256:b63fdbab29dc3868d6f009a59797cefaba315fd43cd32ddd998ee1da28e50e29",
"sha256:bd9577ec1c8c3a43040e3787711e4c257c70035b7551a21854b5dec88dad09e1",
"sha256:c02f4868a3a46ffe284a51a88d134dc96feff6079a7115164885331a1ba8ed9f",
"sha256:c1336ba7bcb722ad487cd265701ff0583c0bb6de638364ca947bb84ecc0015d1",
"sha256:c6fdcc9debb711ddd2ad6d69f9386a3d9e8e253234bbb30513e0a7caa9510c51",
"sha256:c7edf279c1376f28bf41e916c015a2a08896597869d57d621f55b6a30c7e1e6d",
"sha256:c939a1e576bded47d7d03aa2afc2ae90b928b2cf1d9dc2070ceec51fd463f430",
"sha256:cbbd7b215ad4fc6f058b5dd4c26ee5c59f72e031dfda3ac183d7968a99e4ca3a",
"sha256:cd2cdead1d3197f0ff43373cf4730213420523ba48697743e135e26f3d179f38",
"sha256:cda5c32a98f392909088111ecec23f2b0d39346ceae1a0fea23ab2d1f84ec21d",
"sha256:ceab2ce2acdc7fbaa433a93006758db6ba9a659e80c4faa13b80b9d2318e9b17",
"sha256:d34d04bf90b4cea7c22d8b19091633908f14a096caa301b24c2f3d85b5068fb8",
"sha256:d492ed8e92f3a9f9be829205f44b1d0a89af6582f0cf43e0d129fa477b93fe0c",
"sha256:d8853c269a4c5146ddca4aa7c70e631795e9d11239d5fedb1c6bbc91ffdebcac",
"sha256:d9202b9de38f12e99a40addd1a8d508a13c77f46d87ab1f9095f154667f4fe81",
"sha256:dfe7a9da5fd2a3499436cd350f31539e0a6ded5da6b5b3d422df016444d65e43",
"sha256:e041add470e8f8535cc05509485eb7205729a84441f03b25cde80ad48823792e",
"sha256:e25b2a0c396f3b84fb89573d07b0e1846ed563eb364f2ea8230ca92b8a8cb786",
"sha256:e39eaa57c7757daa25bcd21f976c46be443b73dd6c3da47fe5ce7b7048ccefe2",
"sha256:e580aa65d5f6c3bf41b9b4afe74be5d5ddba9576701c107c772d936ea2b5043a",
"sha256:e64139b4ec4f1f24c142ff7dcafe55a22b811a74d86d66560c8815687143037d",
"sha256:e66712b17d8425bb7ff8968d4c7c7fd5a2dd7bd63728b28356223c000dd2f91f",
"sha256:e836fb88902799eac8debc2b642300748f4860a197fa3d9ea502112b6bb8e142",
"sha256:e91703a4c5fec53e36875ae426ad785f4120bd1d93b65bed4752eeccd1789e0c",
"sha256:e975aac6a5acd8b510eba58d5591e10a03e3d16c1cf8a8624ca177491f7230f0",
"sha256:ec6a1e0a7aff76f0e008bebfa950188b9c50b58c1885d898145f48fc8e189a56",
"sha256:ed6a17fd397f0e2b3ad668fc9e19253ed2e3875ad9086bd7f795c29a3223f4a1",
"sha256:ede69c765e9901861ad7c6139023b7b7d5807c48a2539d817b4ab40018002d5f",
"sha256:eea7e2b7d858f6fdfbf0fe3cb846d6bd8a45446865bc09960e51f3d473c2271b",
"sha256:efd3bc6c6b17e3d4620eb6be5196f0d1c08b6ce7c3101fa8e292b79e0908944b",
"sha256:f31c4a3a7ab18467ee73a27f3e59158255d1520f3aad74315edde7a940f1be23",
"sha256:f4bd49ecde87b0fe9f55cc971449a32832bca9910821f7072bbfae1155eaa007",
"sha256:f5272b5866b259fe6c33c4a8c5073bf8b359c3c97b70c298a2f09a69b52c7c41",
"sha256:f5aee2a4cb6b146bd17333ac623610f069f34e8f31d2f4f0c1a2186e50c594f0",
"sha256:f924b485537b640dc69434565463fd6fc0c68c65a8c6e01a823dd26c9983cf79",
"sha256:fc0f523ce923e7f38eb67804bc80e0a028c76d7868500aa3f59225574b5d0453"
],
"markers": "python_version >= '2.5' and python_version not in '3.0, 3.1, 3.2'",
"version": "==3.20.1"
},
"six": {
"hashes": [
"sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274",
"sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"
],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'",
"version": "==1.17.0"
},
"snapshot-restore-py": {
"hashes": [
"sha256:38f99e696793790f54658e71c68c7a8a40cea877c81232b5052383b1301aceba",
"sha256:4d27f82fb6f09968f422501e9c3c2dea48a46cd19dc798eb7d6cbc57523c8004"
],
"markers": "python_version >= '3.9'",
"version": "==1.0.0"
},
"urllib3": {
"hashes": [
"sha256:414bc6535b787febd7567804cc015fee39daab8ad86268f1310a9250697de466",
"sha256:4e16665048960a0900c702d4a66415956a584919c03361cac9f1df5c5dd7e813"
],
"markers": "python_version >= '3.9'",
"version": "==2.4.0"
}
},
"develop": {
"autopep8": {
"hashes": [
"sha256:89440a4f969197b69a995e4ce0661b031f455a9f776d2c5ba3dbd83466931758",
"sha256:ce8ad498672c845a0c3de2629c15b635ec2b05ef8177a6e7c91c74f3e9b51128"
],
"index": "pypi",
"markers": "python_version >= '3.9'",
"version": "==2.3.2"
},
"flake8": {
"hashes": [
"sha256:93b92ba5bdb60754a6da14fa3b93a9361fd00a59632ada61fd7b130436c40343",
"sha256:fa558ae3f6f7dbf2b4f22663e5343b6b6023620461f8d4ff2019ef4b5ee70426"
],
"index": "pypi",
"markers": "python_version >= '3.9'",
"version": "==7.2.0"
},
"mccabe": {
"hashes": [
"sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325",
"sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"
],
"markers": "python_version >= '3.6'",
"version": "==0.7.0"
},
"pycodestyle": {
"hashes": [
"sha256:35863c5974a271c7a726ed228a14a4f6daf49df369d8c50cd9a6f58a5e143ba9",
"sha256:c8415bf09abe81d9c7f872502a6eee881fbe85d8763dd5b9924bb0a01d67efae"
],
"markers": "python_version >= '3.9'",
"version": "==2.13.0"
},
"pyflakes": {
"hashes": [
"sha256:5039c8339cbb1944045f4ee5466908906180f13cc99cc9949348d10f82a5c32a",
"sha256:6dfd61d87b97fba5dcfaaf781171ac16be16453be6d816147989e7f6e6a9576b"
],
"markers": "python_version >= '3.9'",
"version": "==3.3.2"
}
}
}

View File

@ -37,7 +37,6 @@ TARGET_BUCKET_BY_DATA_SOURCE = {
# 変数 # 変数
s3_client = boto3.client('s3') s3_client = boto3.client('s3')
s3_resource = boto3.resource('s3')
sns_client = boto3.client('sns') sns_client = boto3.client('sns')
# logger設定 # logger設定
@ -125,9 +124,8 @@ def handler(event, context):
decrypt_file_key = f'{execute_date}/{decrypt_file_name}' decrypt_file_key = f'{execute_date}/{decrypt_file_name}'
decrypt_bucket_name = TARGET_BUCKET_BY_DATA_SOURCE[s3_event.data_source_name] decrypt_bucket_name = TARGET_BUCKET_BY_DATA_SOURCE[s3_event.data_source_name]
logger.info(f'I-07-02 復号化ファイル出力 ファイル名:{decrypt_file_name} 出力先:{decrypt_bucket_name}/{decrypt_file_key}') logger.info(f'I-07-02 復号化ファイル出力 ファイル名:{decrypt_file_name} 出力先:{decrypt_bucket_name}/{decrypt_file_key}')
decrypt_file_obj = s3_resource.Object(decrypt_bucket_name, decrypt_file_key) s3_client.put_object(Bucket=decrypt_bucket_name, Key=decrypt_file_key, Body=decrypt_file)
decrypt_file_obj.put(Body=decrypt_file) decrypt_file.close()
decrypt_file.close
logger.info('I-07-03 復号化ファイルをS3に出力しました') logger.info('I-07-03 復号化ファイルをS3に出力しました')
except Exception as e: except Exception as e:
logger.exception(f'E-07-01 復号化ファイルのS3出力に失敗しました エラー内容{e}') logger.exception(f'E-07-01 復号化ファイルのS3出力に失敗しました エラー内容{e}')
@ -142,8 +140,7 @@ def handler(event, context):
backup_file_key = f'{s3_event.data_source_name}/{execute_date}/{s3_event.file_name}' backup_file_key = f'{s3_event.data_source_name}/{execute_date}/{s3_event.file_name}'
logger.info( logger.info(
f'I-07-04 PGP暗号化ファイル移動 移動元{s3_event.bucket_name}/{s3_event.file_path} 移動先:{SAP_DATA_BACKUP_BUCKET_NAME}/{backup_file_key}') f'I-07-04 PGP暗号化ファイル移動 移動元{s3_event.bucket_name}/{s3_event.file_path} 移動先:{SAP_DATA_BACKUP_BUCKET_NAME}/{backup_file_key}')
backup_file_obj = s3_resource.Object(SAP_DATA_BACKUP_BUCKET_NAME, backup_file_key) s3_client.copy_object(Bucket=SAP_DATA_BACKUP_BUCKET_NAME, Key=backup_file_key, CopySource=copy_source)
backup_file_obj.copy(copy_source)
s3_client.delete_object(Bucket=s3_event.bucket_name, Key=s3_event.file_path) s3_client.delete_object(Bucket=s3_event.bucket_name, Key=s3_event.file_path)
logger.info('I-07-05 PGP暗号化ファイルをバックアップ用バケットに移動しました') logger.info('I-07-05 PGP暗号化ファイルをバックアップ用バケットに移動しました')
except Exception as e: except Exception as e:
@ -158,8 +155,7 @@ def handler(event, context):
import_file_folder = f'{s3_event.data_source_name}{DIRECTORY_TARGET}' import_file_folder = f'{s3_event.data_source_name}{DIRECTORY_TARGET}'
import_file_key = f'{import_file_folder}{decrypt_file_name}' import_file_key = f'{import_file_folder}{decrypt_file_name}'
logger.info(f'I-07-06 復号化ファイル出力 ファイル名:{decrypt_file_name} 出力先:{s3_event.bucket_name}/{import_file_folder}') logger.info(f'I-07-06 復号化ファイル出力 ファイル名:{decrypt_file_name} 出力先:{s3_event.bucket_name}/{import_file_folder}')
import_file_obj = s3_resource.Object(s3_event.bucket_name, import_file_key) s3_client.copy_object(Bucket=s3_event.bucket_name, Key=import_file_key, CopySource=copy_source)
import_file_obj.copy(copy_source)
logger.info(f'I-07-07 復号化ファイルをS3に出力しました') logger.info(f'I-07-07 復号化ファイルをS3に出力しました')
except Exception as e: except Exception as e:
logger.exception(f'E-07-03 復号化ファイルのS3出力に失敗しました エラー内容{e}') logger.exception(f'E-07-03 復号化ファイルのS3出力に失敗しました エラー内容{e}')
@ -186,8 +182,7 @@ def create_status_file(s3_event, extension) -> None:
try: try:
result_error_file_name = s3_event.file_name + extension result_error_file_name = s3_event.file_name + extension
result_error_key = s3_event.data_source_name + DIRECTORY_RECV + result_error_file_name result_error_key = s3_event.data_source_name + DIRECTORY_RECV + result_error_file_name
result_error_obj = s3_resource.Object(s3_event.bucket_name, result_error_key) s3_client.put_object(Bucket=s3_event.bucket_name, Key=result_error_key, Body='')
result_error_obj.put(Body='')
logger.error( logger.error(
f'E-ERR-01 recvディレクトリにエラーファイルを作成しました ファイル名{result_error_file_name} 出力先:{s3_event.bucket_name}/{result_error_key}') f'E-ERR-01 recvディレクトリにエラーファイルを作成しました ファイル名{result_error_file_name} 出力先:{s3_event.bucket_name}/{result_error_key}')
except Exception as e: except Exception as e:
@ -204,8 +199,7 @@ def move_encrypt_file(s3_event) -> None:
} }
error_file_name = f'{datetime.datetime.now():%Y%m%d%H%M%S}_{s3_event.file_name}' error_file_name = f'{datetime.datetime.now():%Y%m%d%H%M%S}_{s3_event.file_name}'
error_key = s3_event.data_source_name + DIRECTORY_RECV_ERROR + error_file_name error_key = s3_event.data_source_name + DIRECTORY_RECV_ERROR + error_file_name
error_obj = s3_resource.Object(s3_event.bucket_name, error_key) s3_client.copy_object(Bucket=s3_event.bucket_name, Key=error_key, CopySource=copy_source)
error_obj.copy(copy_source)
s3_client.delete_object(Bucket=s3_event.bucket_name, Key=s3_event.file_path) s3_client.delete_object(Bucket=s3_event.bucket_name, Key=s3_event.file_path)
logger.error( logger.error(
f'E-ERR-02 recv_errorディレクトリにファイルを移動しました 移動元{s3_event.bucket_name}/{s3_event.file_path} 移動先:{s3_event.bucket_name}/{error_key}') f'E-ERR-02 recv_errorディレクトリにファイルを移動しました 移動元{s3_event.bucket_name}/{s3_event.file_path} 移動先:{s3_event.bucket_name}/{error_key}')

View File

@ -1,3 +0,0 @@
awslambdaric
boto3
python-gnupg

View File

@ -28,7 +28,6 @@ MAIL_INDENT = '  '
# 変数 # 変数
s3_client = boto3.client('s3') s3_client = boto3.client('s3')
s3_resource = boto3.resource('s3')
sns_client = boto3.client('sns') sns_client = boto3.client('sns')
# logger設定 # logger設定
@ -69,8 +68,7 @@ def lambda_handler(event, context):
# ③ 設定ファイル[SAP_finI/Fファイルネーム設定ファイル月次]を読み込む # ③ 設定ファイル[SAP_finI/Fファイルネーム設定ファイル月次]を読み込む
try: try:
logger.info(f'I-03-01 月次I/Fファイルネーム設定ファイル読込 読込元{CONFIG_BUCKET_NAME}/{RECEIVE_MONTHLY_FILE_NAME_LIST_PATH}') logger.info(f'I-03-01 月次I/Fファイルネーム設定ファイル読込 読込元{CONFIG_BUCKET_NAME}/{RECEIVE_MONTHLY_FILE_NAME_LIST_PATH}')
receive_monthly_file_name_obj = s3_resource.Object(CONFIG_BUCKET_NAME, RECEIVE_MONTHLY_FILE_NAME_LIST_PATH) receive_monthly_file_name_response = s3_client.get_object(Bucket=CONFIG_BUCKET_NAME, Key=RECEIVE_MONTHLY_FILE_NAME_LIST_PATH)
receive_monthly_file_name_response = receive_monthly_file_name_obj.get()
logger.info('I-03-02 月次I/Fファイルネーム設定ファイルを読み込みました') logger.info('I-03-02 月次I/Fファイルネーム設定ファイルを読み込みました')
except Exception as e: except Exception as e:
logger.error(f'E-03-01 月次I/Fファイルネーム設定ファイルの読み込みに失敗しました エラー内容{e}') logger.error(f'E-03-01 月次I/Fファイルネーム設定ファイルの読み込みに失敗しました エラー内容{e}')

View File

@ -34,7 +34,6 @@ MAIL_INDENT = '  '
# 変数 # 変数
s3_client = boto3.client('s3') s3_client = boto3.client('s3')
s3_resource = boto3.resource('s3')
sns_client = boto3.client('sns') sns_client = boto3.client('sns')
# logger設定 # logger設定
@ -69,8 +68,7 @@ def lambda_handler(event, context):
# 1.設定ファイル[メルク社非営業日設定ファイル]を読み込む # 1.設定ファイル[メルク社非営業日設定ファイル]を読み込む
try: try:
logger.info(f'I-02-02 非営業日設定ファイル読込 読込元:{CONFIG_BUCKET_NAME}/{NON_BUSINESS_DAY_LIST_PATH}') logger.info(f'I-02-02 非営業日設定ファイル読込 読込元:{CONFIG_BUCKET_NAME}/{NON_BUSINESS_DAY_LIST_PATH}')
non_business_day_obj = s3_resource.Object(CONFIG_BUCKET_NAME, NON_BUSINESS_DAY_LIST_PATH) non_business_day_response = s3_client.get_object(Bucket=CONFIG_BUCKET_NAME, Key=NON_BUSINESS_DAY_LIST_PATH)
non_business_day_response = non_business_day_obj.get()
logger.info('I-02-03 非営業日設定ファイルを読み込みました') logger.info('I-02-03 非営業日設定ファイルを読み込みました')
except Exception as e: except Exception as e:
logger.error(f'E-02-01 非営業日設定ファイルの読み込みに失敗しました エラー内容:{e}') logger.error(f'E-02-01 非営業日設定ファイルの読み込みに失敗しました エラー内容:{e}')
@ -102,8 +100,7 @@ def lambda_handler(event, context):
# ③ 設定ファイル[SAP_finI/Fファイルネーム設定ファイル日次]を読み込む # ③ 設定ファイル[SAP_finI/Fファイルネーム設定ファイル日次]を読み込む
try: try:
logger.info(f'I-03-01 日次I/Fファイルネーム設定ファイル読込 読込元{CONFIG_BUCKET_NAME}/{RECEIVE_DAILY_FILE_NAME_LIST_PATH}') logger.info(f'I-03-01 日次I/Fファイルネーム設定ファイル読込 読込元{CONFIG_BUCKET_NAME}/{RECEIVE_DAILY_FILE_NAME_LIST_PATH}')
receive_daily_file_name_obj = s3_resource.Object(CONFIG_BUCKET_NAME, RECEIVE_DAILY_FILE_NAME_LIST_PATH) receive_daily_file_name_response = s3_client.get_object(Bucket=CONFIG_BUCKET_NAME, Key=RECEIVE_DAILY_FILE_NAME_LIST_PATH)
receive_daily_file_name_response = receive_daily_file_name_obj.get()
logger.info('I-03-02 日次I/Fファイルネーム設定ファイルを読み込みました') logger.info('I-03-02 日次I/Fファイルネーム設定ファイルを読み込みました')
except Exception as e: except Exception as e:
logger.error(f'E-03-01 日次I/Fファイルネーム設定ファイルの読み込みに失敗しました エラー内容{e}') logger.error(f'E-03-01 日次I/Fファイルネーム設定ファイルの読み込みに失敗しました エラー内容{e}')
@ -115,10 +112,10 @@ def lambda_handler(event, context):
# 1.SAP保管用バケットの処理稼働日に該当するサブフォルダにあるファイル一覧を取得する # 1.SAP保管用バケットの処理稼働日に該当するサブフォルダにあるファイル一覧を取得する
logger.info(f'I-04-02 オブジェクトリストの取得 取得先:{CHECK_BUCKET_NAME}/{execute_date}/') logger.info(f'I-04-02 オブジェクトリストの取得 取得先:{CHECK_BUCKET_NAME}/{execute_date}/')
object_prefix = f'{execute_date}/' object_prefix = f'{execute_date}/'
object_list = s3_resource.Bucket(CHECK_BUCKET_NAME).objects.filter(Prefix=object_prefix) object_list = s3_client.list_objects_v2(Bucket=CHECK_BUCKET_NAME, Prefix=object_prefix)
file_list = [] file_list = []
for obj in object_list: for obj in object_list.get('Contents', []):
obj_key = obj.key.rsplit('/', INDEX_SPLIT_NUM) obj_key = obj['Key'].rsplit('/', INDEX_SPLIT_NUM)
file_list.append(obj_key[INDEX_LAST]) file_list.append(obj_key[INDEX_LAST])
# 2.日次I/Fファイルチェック処理 # 2.日次I/Fファイルチェック処理
@ -126,7 +123,8 @@ def lambda_handler(event, context):
logger.info('I-04-04 取得したオブジェクトリストと日次I/Fファイルネーム設定ファイルの突き合わせを開始します') logger.info('I-04-04 取得したオブジェクトリストと日次I/Fファイルネーム設定ファイルの突き合わせを開始します')
receive_daily_file_name_body = io.TextIOWrapper(io.BytesIO(receive_daily_file_name_response["Body"].read()), encoding='utf-8') receive_daily_file_name_body = io.TextIOWrapper(io.BytesIO(receive_daily_file_name_response["Body"].read()), encoding='utf-8')
match_count = 0 match_count = 0
row_count = sum(1 for line in io.BytesIO(receive_daily_file_name_obj.get()["Body"].read())) receive_daily_file_name_response = s3_client.get_object(Bucket=CONFIG_BUCKET_NAME, Key=RECEIVE_DAILY_FILE_NAME_LIST_PATH)
row_count = sum(1 for line in io.BytesIO(receive_daily_file_name_response["Body"].read()))
for row in csv.reader(receive_daily_file_name_body, delimiter='\t'): for row in csv.reader(receive_daily_file_name_body, delimiter='\t'):
file_exists = False file_exists = False
for file_name in file_list: for file_name in file_list:

View File

@ -34,7 +34,6 @@ MAIL_INDENT = '  '
# 変数 # 変数
s3_client = boto3.client('s3') s3_client = boto3.client('s3')
s3_resource = boto3.resource('s3')
sns_client = boto3.client('sns') sns_client = boto3.client('sns')
# logger設定 # logger設定
@ -71,8 +70,8 @@ def lambda_handler(event, context):
# 1.設定ファイル[チェック処理実施指定日ファイル]を読み込む # 1.設定ファイル[チェック処理実施指定日ファイル]を読み込む
try: try:
logger.info(f'I-02-02 チェック処理実施指定日ファイル読込 読込元:{CONFIG_BUCKET_NAME}/{MONTHLY_CEHCK_DAY_LIST_PATH}') logger.info(f'I-02-02 チェック処理実施指定日ファイル読込 読込元:{CONFIG_BUCKET_NAME}/{MONTHLY_CEHCK_DAY_LIST_PATH}')
monthly_day_obj = s3_resource.Object(CONFIG_BUCKET_NAME, MONTHLY_CEHCK_DAY_LIST_PATH) monthly_day_response = s3_client.get_object(Bucket=CONFIG_BUCKET_NAME, Key=MONTHLY_CEHCK_DAY_LIST_PATH)
monthly_day_response = monthly_day_obj.get()
logger.info('I-02-03 チェック処理実施指定日ファイルを読み込みました') logger.info('I-02-03 チェック処理実施指定日ファイルを読み込みました')
except Exception as e: except Exception as e:
logger.error(f'E-02-01 チェック処理実施指定日設定ファイルの読み込みに失敗しました エラー内容:{e}') logger.error(f'E-02-01 チェック処理実施指定日設定ファイルの読み込みに失敗しました エラー内容:{e}')
@ -104,8 +103,8 @@ def lambda_handler(event, context):
# ③ 設定ファイル[SAP_finI/Fファイルネーム設定ファイル月次]を読み込む # ③ 設定ファイル[SAP_finI/Fファイルネーム設定ファイル月次]を読み込む
try: try:
logger.info(f'I-03-01 月次I/Fファイルネーム設定ファイル読込 読込元{CONFIG_BUCKET_NAME}/{RECEIVE_MONTHLY_FILE_NAME_LIST_PATH}') logger.info(f'I-03-01 月次I/Fファイルネーム設定ファイル読込 読込元{CONFIG_BUCKET_NAME}/{RECEIVE_MONTHLY_FILE_NAME_LIST_PATH}')
receive_monthly_file_name_obj = s3_resource.Object(CONFIG_BUCKET_NAME, RECEIVE_MONTHLY_FILE_NAME_LIST_PATH) receive_monthly_file_name_response = s3_client.get_object(Bucket=CONFIG_BUCKET_NAME, Key=RECEIVE_MONTHLY_FILE_NAME_LIST_PATH)
receive_monthly_file_name_response = receive_monthly_file_name_obj.get()
logger.info('I-03-02 月次I/Fファイルネーム設定ファイルを読み込みました') logger.info('I-03-02 月次I/Fファイルネーム設定ファイルを読み込みました')
except Exception as e: except Exception as e:
logger.error(f'E-03-01 月次I/Fファイルネーム設定ファイルの読み込みに失敗しました エラー内容{e}') logger.error(f'E-03-01 月次I/Fファイルネーム設定ファイルの読み込みに失敗しました エラー内容{e}')
@ -117,10 +116,10 @@ def lambda_handler(event, context):
# 1.SAP保管用バケットの処理稼働月に該当するサブフォルダにあるファイル一覧を取得する # 1.SAP保管用バケットの処理稼働月に該当するサブフォルダにあるファイル一覧を取得する
logger.info(f'I-04-02 オブジェクトリストの取得 取得先:{CHECK_BUCKET_NAME}/{execute_month}/') logger.info(f'I-04-02 オブジェクトリストの取得 取得先:{CHECK_BUCKET_NAME}/{execute_month}/')
object_prefix = f'{execute_month}/' object_prefix = f'{execute_month}/'
object_list = s3_resource.Bucket(CHECK_BUCKET_NAME).objects.filter(Prefix=object_prefix) object_list = s3_client.list_objects_v2(Bucket=CHECK_BUCKET_NAME, Prefix=object_prefix)
file_list = [] file_list = []
for obj in object_list: for obj in object_list.get('Contents', []):
obj_key = obj.key.rsplit('/', INDEX_SPLIT_NUM) obj_key = obj['Key'].rsplit('/', INDEX_SPLIT_NUM)
file_list.append(obj_key[INDEX_LAST]) file_list.append(obj_key[INDEX_LAST])
# 2.月次I/Fファイルチェック処理 # 2.月次I/Fファイルチェック処理
@ -128,7 +127,8 @@ def lambda_handler(event, context):
logger.info('I-04-04 取得したオブジェクトリストと月次I/Fファイルネーム設定ファイルの突き合わせを開始します') logger.info('I-04-04 取得したオブジェクトリストと月次I/Fファイルネーム設定ファイルの突き合わせを開始します')
receive_monthly_file_name_body = io.TextIOWrapper(io.BytesIO(receive_monthly_file_name_response["Body"].read()), encoding='utf-8') receive_monthly_file_name_body = io.TextIOWrapper(io.BytesIO(receive_monthly_file_name_response["Body"].read()), encoding='utf-8')
match_count = 0 match_count = 0
row_count = sum(1 for line in io.BytesIO(receive_monthly_file_name_obj.get()["Body"].read())) receive_monthly_file_name_response = s3_client.get_object(Bucket=CONFIG_BUCKET_NAME, Key=RECEIVE_MONTHLY_FILE_NAME_LIST_PATH)
row_count = sum(1 for line in io.BytesIO(receive_monthly_file_name_response["Body"].read()))
for row in csv.reader(receive_monthly_file_name_body, delimiter='\t'): for row in csv.reader(receive_monthly_file_name_body, delimiter='\t'):
file_exists = False file_exists = False
for file_name in file_list: for file_name in file_list:

View File

@ -28,7 +28,6 @@ MAIL_INDENT = '  '
# 変数 # 変数
s3_client = boto3.client('s3') s3_client = boto3.client('s3')
s3_resource = boto3.resource('s3')
sns_client = boto3.client('sns') sns_client = boto3.client('sns')
# logger設定 # logger設定
@ -69,8 +68,7 @@ def lambda_handler(event, context):
# ③ 設定ファイル[SAP_supI/Fファイルネーム設定ファイル月次]を読み込む # ③ 設定ファイル[SAP_supI/Fファイルネーム設定ファイル月次]を読み込む
try: try:
logger.info(f'I-03-01 月次I/Fファイルネーム設定ファイル読込 読込元{CONFIG_BUCKET_NAME}/{RECEIVE_MONTHLY_FILE_NAME_LIST_PATH}') logger.info(f'I-03-01 月次I/Fファイルネーム設定ファイル読込 読込元{CONFIG_BUCKET_NAME}/{RECEIVE_MONTHLY_FILE_NAME_LIST_PATH}')
receive_monthly_file_name_obj = s3_resource.Object(CONFIG_BUCKET_NAME, RECEIVE_MONTHLY_FILE_NAME_LIST_PATH) receive_monthly_file_name_response = s3_client.get_object(Bucket=CONFIG_BUCKET_NAME, Key=RECEIVE_MONTHLY_FILE_NAME_LIST_PATH)
receive_monthly_file_name_response = receive_monthly_file_name_obj.get()
logger.info('I-03-02 月次I/Fファイルネーム設定ファイルを読み込みました') logger.info('I-03-02 月次I/Fファイルネーム設定ファイルを読み込みました')
except Exception as e: except Exception as e:
logger.error(f'E-03-01 月次I/Fファイルネーム設定ファイルの読み込みに失敗しました エラー内容{e}') logger.error(f'E-03-01 月次I/Fファイルネーム設定ファイルの読み込みに失敗しました エラー内容{e}')

View File

@ -34,7 +34,6 @@ MAIL_INDENT = '  '
# 変数 # 変数
s3_client = boto3.client('s3') s3_client = boto3.client('s3')
s3_resource = boto3.resource('s3')
sns_client = boto3.client('sns') sns_client = boto3.client('sns')
# logger設定 # logger設定
@ -69,8 +68,7 @@ def lambda_handler(event, context):
# 1.設定ファイル[メルク社非営業日設定ファイル]を読み込む # 1.設定ファイル[メルク社非営業日設定ファイル]を読み込む
try: try:
logger.info(f'I-02-02 非営業日設定ファイル読込 読込元:{CONFIG_BUCKET_NAME}/{NON_BUSINESS_DAY_LIST_PATH}') logger.info(f'I-02-02 非営業日設定ファイル読込 読込元:{CONFIG_BUCKET_NAME}/{NON_BUSINESS_DAY_LIST_PATH}')
non_business_day_obj = s3_resource.Object(CONFIG_BUCKET_NAME, NON_BUSINESS_DAY_LIST_PATH) non_business_day_response = s3_client.get_object(Bucket=CONFIG_BUCKET_NAME, Key=NON_BUSINESS_DAY_LIST_PATH)
non_business_day_response = non_business_day_obj.get()
logger.info('I-02-03 非営業日設定ファイルを読み込みました') logger.info('I-02-03 非営業日設定ファイルを読み込みました')
except Exception as e: except Exception as e:
logger.error(f'E-02-01 非営業日設定ファイルの読み込みに失敗しました エラー内容:{e}') logger.error(f'E-02-01 非営業日設定ファイルの読み込みに失敗しました エラー内容:{e}')
@ -102,8 +100,7 @@ def lambda_handler(event, context):
# ③ 設定ファイル[SAP_supI/Fファイルネーム設定ファイル日次]を読み込む # ③ 設定ファイル[SAP_supI/Fファイルネーム設定ファイル日次]を読み込む
try: try:
logger.info(f'I-03-01 日次I/Fファイルネーム設定ファイル読込 読込元{CONFIG_BUCKET_NAME}/{RECEIVE_DAILY_FILE_NAME_LIST_PATH}') logger.info(f'I-03-01 日次I/Fファイルネーム設定ファイル読込 読込元{CONFIG_BUCKET_NAME}/{RECEIVE_DAILY_FILE_NAME_LIST_PATH}')
receive_daily_file_name_obj = s3_resource.Object(CONFIG_BUCKET_NAME, RECEIVE_DAILY_FILE_NAME_LIST_PATH) receive_daily_file_name_response = s3_client.get_object(Bucket=CONFIG_BUCKET_NAME, Key=RECEIVE_DAILY_FILE_NAME_LIST_PATH)
receive_daily_file_name_response = receive_daily_file_name_obj.get()
logger.info('I-03-02 日次I/Fファイルネーム設定ファイルを読み込みました') logger.info('I-03-02 日次I/Fファイルネーム設定ファイルを読み込みました')
except Exception as e: except Exception as e:
logger.error(f'E-03-01 日次I/Fファイルネーム設定ファイルの読み込みに失敗しました エラー内容{e}') logger.error(f'E-03-01 日次I/Fファイルネーム設定ファイルの読み込みに失敗しました エラー内容{e}')
@ -115,10 +112,10 @@ def lambda_handler(event, context):
# 1.SAP保管用バケットの処理稼働日に該当するサブフォルダにあるファイル一覧を取得する # 1.SAP保管用バケットの処理稼働日に該当するサブフォルダにあるファイル一覧を取得する
logger.info(f'I-04-02 オブジェクトリストの取得 取得先:{CHECK_BUCKET_NAME}/{execute_date}/') logger.info(f'I-04-02 オブジェクトリストの取得 取得先:{CHECK_BUCKET_NAME}/{execute_date}/')
object_prefix = f'{execute_date}/' object_prefix = f'{execute_date}/'
object_list = s3_resource.Bucket(CHECK_BUCKET_NAME).objects.filter(Prefix=object_prefix) object_list = s3_client.list_objects_v2(Bucket=CHECK_BUCKET_NAME, Prefix=object_prefix)
file_list = [] file_list = []
for obj in object_list: for obj in object_list.get('Contents', []):
obj_key = obj.key.rsplit('/', INDEX_SPLIT_NUM) obj_key = obj['Key'].rsplit('/', INDEX_SPLIT_NUM)
file_list.append(obj_key[INDEX_LAST]) file_list.append(obj_key[INDEX_LAST])
# 2.日次I/Fファイルチェック処理 # 2.日次I/Fファイルチェック処理
@ -126,7 +123,8 @@ def lambda_handler(event, context):
logger.info('I-04-04 取得したオブジェクトリストと日次I/Fファイルネーム設定ファイルの突き合わせを開始します') logger.info('I-04-04 取得したオブジェクトリストと日次I/Fファイルネーム設定ファイルの突き合わせを開始します')
receive_daily_file_name_body = io.TextIOWrapper(io.BytesIO(receive_daily_file_name_response["Body"].read()), encoding='utf-8') receive_daily_file_name_body = io.TextIOWrapper(io.BytesIO(receive_daily_file_name_response["Body"].read()), encoding='utf-8')
match_count = 0 match_count = 0
row_count = sum(1 for line in io.BytesIO(receive_daily_file_name_obj.get()["Body"].read())) receive_daily_file_name_response = s3_client.get_object(Bucket=CONFIG_BUCKET_NAME, Key=RECEIVE_DAILY_FILE_NAME_LIST_PATH)
row_count = sum(1 for line in io.BytesIO(receive_daily_file_name_response["Body"].read()))
for row in csv.reader(receive_daily_file_name_body, delimiter='\t'): for row in csv.reader(receive_daily_file_name_body, delimiter='\t'):
file_exists = False file_exists = False
for file_name in file_list: for file_name in file_list:

View File

@ -71,8 +71,7 @@ def lambda_handler(event, context):
# 1.設定ファイル[チェック処理実施指定日ファイル]を読み込む # 1.設定ファイル[チェック処理実施指定日ファイル]を読み込む
try: try:
logger.info(f'I-02-02 チェック処理実施指定日ファイル読込 読込元:{CONFIG_BUCKET_NAME}/{MONTHLY_CEHCK_DAY_LIST_PATH}') logger.info(f'I-02-02 チェック処理実施指定日ファイル読込 読込元:{CONFIG_BUCKET_NAME}/{MONTHLY_CEHCK_DAY_LIST_PATH}')
monthly_day_obj = s3_resource.Object(CONFIG_BUCKET_NAME, MONTHLY_CEHCK_DAY_LIST_PATH) monthly_day_response = s3_client.get_object(Bucket=CONFIG_BUCKET_NAME, Key=MONTHLY_CEHCK_DAY_LIST_PATH)
monthly_day_response = monthly_day_obj.get()
logger.info('I-02-03 チェック処理実施指定日ファイルを読み込みました') logger.info('I-02-03 チェック処理実施指定日ファイルを読み込みました')
except Exception as e: except Exception as e:
logger.error(f'E-02-01 チェック処理実施指定日設定ファイルの読み込みに失敗しました エラー内容:{e}') logger.error(f'E-02-01 チェック処理実施指定日設定ファイルの読み込みに失敗しました エラー内容:{e}')
@ -104,8 +103,7 @@ def lambda_handler(event, context):
# ③ 設定ファイル[SAP_supI/Fファイルネーム設定ファイル月次]を読み込む # ③ 設定ファイル[SAP_supI/Fファイルネーム設定ファイル月次]を読み込む
try: try:
logger.info(f'I-03-01 月次I/Fファイルネーム設定ファイル読込 読込元{CONFIG_BUCKET_NAME}/{RECEIVE_MONTHLY_FILE_NAME_LIST_PATH}') logger.info(f'I-03-01 月次I/Fファイルネーム設定ファイル読込 読込元{CONFIG_BUCKET_NAME}/{RECEIVE_MONTHLY_FILE_NAME_LIST_PATH}')
receive_monthly_file_name_obj = s3_resource.Object(CONFIG_BUCKET_NAME, RECEIVE_MONTHLY_FILE_NAME_LIST_PATH) receive_monthly_file_name_response = s3_client.get_object(Bucket=CONFIG_BUCKET_NAME, Key=RECEIVE_MONTHLY_FILE_NAME_LIST_PATH)
receive_monthly_file_name_response = receive_monthly_file_name_obj.get()
logger.info('I-03-02 月次I/Fファイルネーム設定ファイルを読み込みました') logger.info('I-03-02 月次I/Fファイルネーム設定ファイルを読み込みました')
except Exception as e: except Exception as e:
logger.error(f'E-03-01 月次I/Fファイルネーム設定ファイルの読み込みに失敗しました エラー内容{e}') logger.error(f'E-03-01 月次I/Fファイルネーム設定ファイルの読み込みに失敗しました エラー内容{e}')
@ -117,10 +115,10 @@ def lambda_handler(event, context):
# 1.SAP保管用バケットの処理稼働月に該当するサブフォルダにあるファイル一覧を取得する # 1.SAP保管用バケットの処理稼働月に該当するサブフォルダにあるファイル一覧を取得する
logger.info(f'I-04-02 オブジェクトリストの取得 取得先:{CHECK_BUCKET_NAME}/{execute_month}/') logger.info(f'I-04-02 オブジェクトリストの取得 取得先:{CHECK_BUCKET_NAME}/{execute_month}/')
object_prefix = f'{execute_month}/' object_prefix = f'{execute_month}/'
object_list = s3_resource.Bucket(CHECK_BUCKET_NAME).objects.filter(Prefix=object_prefix) object_list = s3_client.list_objects_v2(Bucket=CHECK_BUCKET_NAME, Prefix=object_prefix)
file_list = [] file_list = []
for obj in object_list: for obj in object_list.get('Contents', []):
obj_key = obj.key.rsplit('/', INDEX_SPLIT_NUM) obj_key = obj['Key'].rsplit('/', INDEX_SPLIT_NUM)
file_list.append(obj_key[INDEX_LAST]) file_list.append(obj_key[INDEX_LAST])
# 2.月次I/Fファイルチェック処理 # 2.月次I/Fファイルチェック処理
@ -128,7 +126,8 @@ def lambda_handler(event, context):
logger.info('I-04-04 取得したオブジェクトリストと月次I/Fファイルネーム設定ファイルの突き合わせを開始します') logger.info('I-04-04 取得したオブジェクトリストと月次I/Fファイルネーム設定ファイルの突き合わせを開始します')
receive_monthly_file_name_body = io.TextIOWrapper(io.BytesIO(receive_monthly_file_name_response["Body"].read()), encoding='utf-8') receive_monthly_file_name_body = io.TextIOWrapper(io.BytesIO(receive_monthly_file_name_response["Body"].read()), encoding='utf-8')
match_count = 0 match_count = 0
row_count = sum(1 for line in io.BytesIO(receive_monthly_file_name_obj.get()["Body"].read())) receive_monthly_file_name_response = s3_client.get_object(Bucket=CONFIG_BUCKET_NAME, Key=RECEIVE_MONTHLY_FILE_NAME_LIST_PATH)
row_count = sum(1 for line in io.BytesIO(receive_monthly_file_name_response["Body"].read()))
for row in csv.reader(receive_monthly_file_name_body, delimiter='\t'): for row in csv.reader(receive_monthly_file_name_body, delimiter='\t'):
file_exists = False file_exists = False
for file_name in file_list: for file_name in file_list:

View File

@ -0,0 +1,19 @@
# AWS公式のDockerイメージを利用
FROM public.ecr.aws/lambda/python:3.12
# pythonの標準出力をバッファリングしないフラグ
ENV PYTHONUNBUFFERED=1
# pythonのバイトコードを生成しないフラグ
ENV PYTHONDONTWRITEBYTECODE=1
# 必要なファイルをイメージにコピー
COPY Pipfile Pipfile.lock main.py ./
# ライブラリインストール
RUN pip install --upgrade pip wheel setuptools && \
pip install pipenv --no-cache-dir && \
pipenv install --system --deploy && \
pip uninstall -y pipenv virtualenv-clone virtualenv
# lambdaハンドラを起動
CMD [ "main.handler" ]

View File

@ -0,0 +1,15 @@
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"
[packages]
boto3 = "*"
pyzipper = "*"
[dev-packages]
autopep8 = "*"
flake8 = "*"
[requires]
python_version = "3.12"

177
lambda/transfer-medpass-data/Pipfile.lock generated Normal file
View File

@ -0,0 +1,177 @@
{
"_meta": {
"hash": {
"sha256": "d8b79fd5be60005b43448511c67536c114e5fd73722a17e77a5e60a9283aea25"
},
"pipfile-spec": 6,
"requires": {
"python_version": "3.12"
},
"sources": [
{
"name": "pypi",
"url": "https://pypi.org/simple",
"verify_ssl": true
}
]
},
"default": {
"boto3": {
"hashes": [
"sha256:3faa2c328a61745f3215a63039606a6fcf55d9afe1cc76e3a5e27b9db58cdbf6",
"sha256:b998edac72f6740bd5d9d585cf3880f2dfeb4842e626b34430fd0e9623378011"
],
"index": "pypi",
"markers": "python_version >= '3.9'",
"version": "==1.38.32"
},
"botocore": {
"hashes": [
"sha256:0899a090e352cb5eeaae2c7bb52a987b469d23912c7ece86664dfb5c2e074978",
"sha256:64ab919a5d8b74dd73eaac1f978d0e674d11ff3bbe8815c3d2982477be9a082c"
],
"markers": "python_version >= '3.9'",
"version": "==1.38.32"
},
"jmespath": {
"hashes": [
"sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980",
"sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe"
],
"markers": "python_version >= '3.7'",
"version": "==1.0.1"
},
"pycryptodomex": {
"hashes": [
"sha256:02d87b80778c171445d67e23d1caef279bf4b25c3597050ccd2e13970b57fd51",
"sha256:06698f957fe1ab229a99ba2defeeae1c09af185baa909a31a5d1f9d42b1aaed6",
"sha256:14c37aaece158d0ace436f76a7bb19093db3b4deade9797abfc39ec6cd6cc2fe",
"sha256:189afbc87f0b9f158386bf051f720e20fa6145975f1e76369303d0f31d1a8d7c",
"sha256:1c3a65ad441746b250d781910d26b7ed0a396733c6f2dbc3327bd7051ec8a541",
"sha256:1c6d919fc8429e5cb228ba8c0d4d03d202a560b421c14867a65f6042990adc8e",
"sha256:267a3038f87a8565bd834317dbf053a02055915acf353bf42ededb9edaf72010",
"sha256:27e13c80ac9a0a1d050ef0a7e0a18cc04c8850101ec891815b6c5a0375e8a245",
"sha256:43c446e2ba8df8889e0e16f02211c25b4934898384c1ec1ec04d7889c0333587",
"sha256:47f6d318fe864d02d5e59a20a18834819596c4ed1d3c917801b22b92b3ffa648",
"sha256:4e79f1aaff5a3a374e92eb462fa9e598585452135012e2945f96874ca6eeb1ff",
"sha256:4f2596e643d4365e14d0879dc5aafe6355616c61c2176009270f3048f6d9a61f",
"sha256:52e5ca58c3a0b0bd5e100a9fbc8015059b05cffc6c66ce9d98b4b45e023443b9",
"sha256:55ccbe27f049743a4caf4f4221b166560d3438d0b1e5ab929e07ae1702a4d6fd",
"sha256:58b851b9effd0d072d4ca2e4542bf2a4abcf13c82a29fd2c93ce27ee2a2e9462",
"sha256:6b8962204c47464d5c1c4038abeadd4514a133b28748bcd9fa5b6d62e3cec6fa",
"sha256:6bbcb1dd0f646484939e142462d9e532482bc74475cecf9c4903d4e1cd21f003",
"sha256:71909758f010c82bc99b0abf4ea12012c98962fbf0583c2164f8b84533c2e4da",
"sha256:7b37e08e3871efe2187bc1fd9320cc81d87caf19816c648f24443483005ff886",
"sha256:7de1e40a41a5d7f1ac42b6569b10bcdded34339950945948529067d8426d2785",
"sha256:8a4fcd42ccb04c31268d1efeecfccfd1249612b4de6374205376b8f280321744",
"sha256:91979028227543010d7b2ba2471cf1d1e398b3f183cb105ac584df0c36dac28d",
"sha256:a33986a0066860f7fcf7c7bd2bc804fa90e434183645595ae7b33d01f3c91ed8",
"sha256:a9d446e844f08299236780f2efa9898c818fe7e02f17263866b8550c7d5fb328",
"sha256:add243d204e125f189819db65eed55e6b4713f70a7e9576c043178656529cec7",
"sha256:b2c2537863eccef2d41061e82a881dcabb04944c5c06c5aa7110b577cc487545",
"sha256:bc65bdd9fc8de7a35a74cab1c898cab391a4add33a8fe740bda00f5976ca4708",
"sha256:bdc69d0d3d989a1029df0eed67cc5e8e5d968f3724f4519bd03e0ec68df7543c",
"sha256:bffc92138d75664b6d543984db7893a628559b9e78658563b0395e2a5fb47ed9",
"sha256:c25e30a20e1b426e1f0fa00131c516f16e474204eee1139d1603e132acffc314",
"sha256:c7947ab8d589e3178da3d7cdeabe14f841b391e17046954f2fbcd941705762b5",
"sha256:c84b239a1f4ec62e9c789aafe0543f0594f0acd90c8d9e15bcece3efe55eca66",
"sha256:c885da45e70139464f082018ac527fdaad26f1657a99ee13eecdce0f0ca24ab4",
"sha256:d9825410197a97685d6a1fa2a86196430b01877d64458a20e95d4fd00d739a08",
"sha256:da4fa650cef02db88c2b98acc5434461e027dce0ae8c22dd5a69013eaf510006",
"sha256:df027262368334552db2c0ce39706b3fb32022d1dce34673d0f9422df004b96a",
"sha256:ebfff755c360d674306e5891c564a274a47953562b42fb74a5c25b8fc1fb1cb5",
"sha256:eca54f4bb349d45afc17e3011ed4264ef1cc9e266699874cdd1349c504e64798",
"sha256:f489c4765093fb60e2edafdf223397bc716491b2b69fe74367b70d6999257a5c",
"sha256:fdfac7cda115bca3a5abb2f9e43bc2fb66c2b65ab074913643803ca7083a79ea",
"sha256:febec69c0291efd056c65691b6d9a339f8b4bc43c6635b8699471248fe897fea"
],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6'",
"version": "==3.23.0"
},
"python-dateutil": {
"hashes": [
"sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3",
"sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"
],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'",
"version": "==2.9.0.post0"
},
"pyzipper": {
"hashes": [
"sha256:0adca90a00c36a93fbe49bfa8c5add452bfe4ef85a1b8e3638739dd1c7b26bfc",
"sha256:6d097f465bfa47796b1494e12ea65d1478107d38e13bc56f6e58eedc4f6c1a87"
],
"index": "pypi",
"markers": "python_version >= '3.4'",
"version": "==0.3.6"
},
"s3transfer": {
"hashes": [
"sha256:0148ef34d6dd964d0d8cf4311b2b21c474693e57c2e069ec708ce043d2b527be",
"sha256:f5e6db74eb7776a37208001113ea7aa97695368242b364d73e91c981ac522177"
],
"markers": "python_version >= '3.9'",
"version": "==0.13.0"
},
"six": {
"hashes": [
"sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274",
"sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"
],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'",
"version": "==1.17.0"
},
"urllib3": {
"hashes": [
"sha256:414bc6535b787febd7567804cc015fee39daab8ad86268f1310a9250697de466",
"sha256:4e16665048960a0900c702d4a66415956a584919c03361cac9f1df5c5dd7e813"
],
"markers": "python_version >= '3.9'",
"version": "==2.4.0"
}
},
"develop": {
"autopep8": {
"hashes": [
"sha256:8d6c87eba648fdcfc83e29b788910b8643171c395d9c4bcf115ece035b9c9dda",
"sha256:a203fe0fcad7939987422140ab17a930f684763bf7335bdb6709991dd7ef6c2d"
],
"index": "pypi",
"markers": "python_version >= '3.8'",
"version": "==2.3.1"
},
"flake8": {
"hashes": [
"sha256:049d058491e228e03e67b390f311bbf88fce2dbaa8fa673e7aea87b7198b8d38",
"sha256:597477df7860daa5aa0fdd84bf5208a043ab96b8e96ab708770ae0364dd03213"
],
"index": "pypi",
"markers": "python_full_version >= '3.8.1'",
"version": "==7.1.1"
},
"mccabe": {
"hashes": [
"sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325",
"sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"
],
"markers": "python_version >= '3.6'",
"version": "==0.7.0"
},
"pycodestyle": {
"hashes": [
"sha256:46f0fb92069a7c28ab7bb558f05bfc0110dac69a0cd23c61ea0040283a9d78b3",
"sha256:6838eae08bbce4f6accd5d5572075c63626a15ee3e6f842df996bf62f6d73521"
],
"markers": "python_version >= '3.8'",
"version": "==2.12.1"
},
"pyflakes": {
"hashes": [
"sha256:1c61603ff154621fb2a9172037d84dca3500def8c8b630657d1701f026f8af3f",
"sha256:84b5be138a2dfbb40689ca07e2152deb896a65c3a3e24c251c5c62489568074a"
],
"markers": "python_version >= '3.8'",
"version": "==3.2.0"
}
}
}

View File

@ -0,0 +1,236 @@
import datetime
import logging
import os
from zoneinfo import ZoneInfo
import boto3
import pyzipper
from pyzipper.zipfile import BadZipFile
# 環境変数
DATA_IMPORT_BUCKET = os.environ["DATA_IMPORT_BUCKET"]
HCP_WEB_TARGET_FOLDER = os.environ["HCP_WEB_TARGET_FOLDER"]
HCP_WEB_BACKUP_BUCKET = os.environ["HCP_WEB_BACKUP_BUCKET"]
BACKUP_ZIPFILE_FOLDER = os.environ["BACKUP_ZIPFILE_FOLDER"]
BACKUP_DATA_IMPORT_FOLDER = os.environ["BACKUP_DATA_IMPORT_FOLDER"]
DATA_IMPORT_FILENAME = os.environ["DATA_IMPORT_FILENAME"]
MEDPASS_ZIP_PASSWORD_PARAMETER_STORE_KEY = os.environ["MEDPASS_ZIP_PASSWORD_PARAMETER_STORE_KEY"]
LOG_LEVEL = os.environ["LOG_LEVEL"]
TZ = os.environ["TZ"]
# 定数
# 多重起動抑制用のコントロールファイルの拡張子
EXCLUSIVE_CONTROL_FILE_EXT = '.doing'
# tmpフォルダパス
PATH_TMP = '/tmp'
# 拡張子
ZIP_FILE_EXT = 'zip'
CSV_FILE_EXT = 'csv'
# S3クライアント
s3_client = boto3.client('s3')
# SystemsManagerクライアント
ssm_client = boto3.client('ssm')
# logger設定
logger = logging.getLogger()
def log_datetime_convert_tz(*arg):
"""ログに出力するタイムスタンプのロケールを変更するJST指定"""
return datetime.datetime.now(ZoneInfo(TZ)).timetuple()
formatter = logging.Formatter(
'[%(levelname)s]\t%(asctime)s\t%(message)s\n',
'%Y-%m-%d %H:%M:%S'
)
formatter.converter = log_datetime_convert_tz
for handler in logger.handlers:
handler.setFormatter(formatter)
level = logging.getLevelName(LOG_LEVEL)
if not isinstance(level, int):
level = logging.INFO
logger.setLevel(level)
def extract_zip_with_password(zip_filepath: str, extract_to_folder: str, password: str) -> os.path:
"""
暗号化ZIPを解凍する
:param zip_filepath: ZIPファイルが保管されているフォルダパス
:param extract_to_folder: ZIPファイルの解凍先フォルダ
:param password: ZIPパスワード
:return 解凍されたファイルパス
"""
# ZIPを解凍
try:
with pyzipper.AESZipFile(zip_filepath) as z:
# ZIP内のファイルは1つのみ
inner_filename = z.filelist[0].filename
z.extractall(path=extract_to_folder, pwd=password.encode())
except Exception as e:
raise e
return os.path.join(extract_to_folder, inner_filename)
def get_s3_event_parameter(event: dict) -> tuple[str, str, str, str]:
s3_event = event["Records"][0]["s3"]
event_bucket_name: str = s3_event["bucket"]["name"]
event_object_key: str = s3_event["object"]["key"]
event_file_name: str = os.path.basename(event_object_key)
event_folder_name: str = os.path.dirname(event_object_key).split('/')[0]
return event_bucket_name, event_object_key, event_file_name, event_folder_name
def get_ssm_params(parameter_key: str, with_decryption: bool = True) -> str:
"""SSMパラメータストアから指定されたパラメータ名の値を取得する"""
response = ssm_client.get_parameter(
Name=parameter_key, WithDecryption=with_decryption)
parameter_value: str = response['Parameter']['Value']
return parameter_value
def delete_doing_file(event: dict) -> None:
""".doingファイルをバケット上から削除する"""
# イベント情報を取得
(
event_bucket_name,
event_object_key,
_,
_
) = get_s3_event_parameter(event)
# ⑨ メモリに保持したバケット名/フォルダ名内の「受信データファイル名.doing」ファイルを削除する
s3_client.delete_object(
Bucket=event_bucket_name, Key=f'{event_object_key}{EXCLUSIVE_CONTROL_FILE_EXT}')
def handler(event, context) -> None:
try:
# ① 処理開始ログを出力する
logger.info('I-01-01 処理開始 medパスデータ解凍・復号化・転送処理')
# ② 処理開始時に受け取ったイベント情報をログに出力する
# バケット名・フォルダ名・受信データファイル名をメモリに保持
(
event_bucket_name,
event_object_key,
event_file_name,
event_folder_name
) = get_s3_event_parameter(event)
logger.info(f'I-02-01 受信バケット:{event_bucket_name}')
logger.info(f'I-02-01 フォルダ名:{event_folder_name}')
logger.info(f'I-02-01 ファイル名:{event_file_name}')
# ③ S3イベントによるLambdaの重複発火防止の為、メモリに保持したバケット名/フォルダ名内に、「受信データファイル名.doing」ファイルが存在するかチェックする
try:
s3_client.head_object(
Bucket=event_bucket_name, Key=f'{event_object_key}{EXCLUSIVE_CONTROL_FILE_EXT}')
logger.error(
f'E-01-01 {event_bucket_name}/{event_object_key}は現在処理中です。処理を終了します。')
return
except Exception:
# .doingファイルが見つからなかった場合は、処理を続行する
# メモリに保持したバケット名/フォルダ名内に、「受信データファイル名.doing」ファイルを作成する
logger.info('I-03-01 medパスデータの解凍・復号化・転送を開始します')
s3_client.put_object(
Bucket=event_bucket_name, Key=f'{event_object_key}{EXCLUSIVE_CONTROL_FILE_EXT}', Body=b'')
# ④ S3から暗号化ZIPファイルを読み込む
try:
logger.info(
f'I-04-01 暗号化ZIPファイル読込 読込元{event_bucket_name}/{event_object_key}')
s3_client.download_file(
event_bucket_name, event_object_key, os.path.join(PATH_TMP, event_file_name))
logger.info('I-04-02 暗号化ZIPファイルをダウンロードしました')
except Exception as e:
logger.exception(f'E-04-01 暗号化ZIPファイルのダウンロードに失敗しました エラー内容{e}')
delete_doing_file(event)
return
# ⑤ ZIP解凍パスワードをSSM パラメータストアから取得する
try:
logger.info('I-05-01 ZIP解凍パスワードを読込')
zip_password = get_ssm_params(
MEDPASS_ZIP_PASSWORD_PARAMETER_STORE_KEY)
except Exception as e:
logger.exception(f'E-05-01 ZIP解凍パスワードの読み込みに失敗しました エラー内容{e}')
delete_doing_file(event)
return
# ⑥ ZIPファイルを解凍してローカルに保存
try:
logger.info(f'I-05-02 ZIP解凍開始')
extracted_zip_file_path = extract_zip_with_password(
os.path.join(PATH_TMP, event_file_name), PATH_TMP, zip_password)
except RuntimeError as e:
if 'password' in str(e).lower():
# パスワードが間違っている場合のエラー
logger.exception(
f'E-05-02 ZIPのパスワードが不正のため、解凍に失敗しました エラー内容{e}')
delete_doing_file(event)
return
else:
# 想定外のエラー
raise e
# ZIPファイルが壊れている場合のエラー
except BadZipFile as e:
logger.exception(f'E-05-03 ZIPの形式が不正のため、解凍に失敗しました エラー内容{e}')
delete_doing_file(event)
return
# データ登録用にファイルをリネーム
# ZIPファイル名がyyyymmdd.zipのため、年月日部分をデータ登録用ファイル名の末尾につけ、拡張子をCSVに変更
data_import_file_name = f'{DATA_IMPORT_FILENAME}_{event_file_name.lower().replace(ZIP_FILE_EXT, CSV_FILE_EXT)}'
logger.info(f'I-05-03 ZIP解凍成功')
# ⑥ 受信した暗号化ZIPファイルと解凍後のファイルをバックアップする
backup_copy_source = {
'Bucket': event_bucket_name, 'Key': event_object_key}
execute_date_yyyymmdd = datetime.date.today().strftime('%Y/%m/%d')
# ZIPファイルのバックアップ
s3_client.copy_object(
Bucket=HCP_WEB_BACKUP_BUCKET,
Key=f'{BACKUP_ZIPFILE_FOLDER}/{execute_date_yyyymmdd}/{event_file_name}',
CopySource=backup_copy_source
)
logger.info(
f'I-06-01 medパス受信データのバックアップ完了{HCP_WEB_BACKUP_BUCKET}/{BACKUP_ZIPFILE_FOLDER}/{execute_date_yyyymmdd}/{event_file_name}')
# 解凍後ファイルのバックアップ
s3_client.upload_file(
extracted_zip_file_path,
Bucket=HCP_WEB_BACKUP_BUCKET,
Key=f'{BACKUP_DATA_IMPORT_FOLDER}/{execute_date_yyyymmdd}/{data_import_file_name}'
)
logger.info(
f'I-06-02 medパス解凍後データのバックアップ完了{HCP_WEB_BACKUP_BUCKET}/{BACKUP_DATA_IMPORT_FOLDER}/{execute_date_yyyymmdd}/{data_import_file_name}')
# ⑦ 解凍後のファイルをデータ登録バケットに転送する
data_import_copy_source = {'Bucket': HCP_WEB_BACKUP_BUCKET,
'Key': f'{BACKUP_DATA_IMPORT_FOLDER}/{execute_date_yyyymmdd}/{data_import_file_name}'}
s3_client.copy_object(
Bucket=DATA_IMPORT_BUCKET,
Key=f'{HCP_WEB_TARGET_FOLDER}/{data_import_file_name}',
CopySource=data_import_copy_source
)
# アップロード後、元のバケットからは削除する
s3_client.delete_object(Bucket=event_bucket_name, Key=event_object_key)
logger.info(
f'I-07-01 medパス解凍後データの転送完了{DATA_IMPORT_BUCKET}/{HCP_WEB_TARGET_FOLDER}/{data_import_file_name}')
# ⑧ メモリに保持したバケット名/フォルダ名内の「受信データファイル名.doing」ファイルを削除する
delete_doing_file(event)
logger.info('I-08-01 処理終了 medパスデータ解凍・復号化・転送処理')
except Exception as e:
logger.exception(f'想定外のエラーが発生しました。処理を終了します。 例外内容:{e}')
delete_doing_file(event)
raise e

View File

@ -0,0 +1,214 @@
import datetime
import json
import logging
import os
import re
from zoneinfo import ZoneInfo
import boto3
# 環境変数
CONFIG_BUCKET_NAME = os.environ["CONFIG_BUCKET_NAME"]
BUCKET_TRANSFER_SETTING_FILE_FOLDER = os.environ["BUCKET_TRANSFER_SETTING_FILE_FOLDER"]
BUCKET_TRANSFER_SETTING_FILE_NAME = os.environ["BUCKET_TRANSFER_SETTING_FILE_NAME"]
LOG_LEVEL = os.environ["LOG_LEVEL"]
TZ = os.environ["TZ"]
ENV = os.environ["ENV"]
# 定数
EXCLUSIVE_CONTROL_FILE_EXT = '.doing'
# S3クライアント
s3_client = boto3.client('s3')
# logger設定
logger = logging.getLogger()
def log_datetime_convert_tz(*arg):
"""ログに出力するタイムスタンプのロケールを変更するJST指定"""
return datetime.datetime.now(ZoneInfo(TZ)).timetuple()
formatter = logging.Formatter(
'[%(levelname)s]\t%(asctime)s\t%(message)s\n',
'%Y-%m-%d %H:%M:%S'
)
formatter.converter = log_datetime_convert_tz
for handler in logger.handlers:
handler.setFormatter(formatter)
level = logging.getLevelName(LOG_LEVEL)
if not isinstance(level, int):
level = logging.INFO
logger.setLevel(level)
def get_s3_event_parameter(event: dict) -> tuple[str, str, str, str]:
"""Lambdaに送信されたEvent情報からS3のイベントを取得する"""
s3_event = event["Records"][0]["s3"]
event_bucket_name: str = s3_event["bucket"]["name"]
event_object_key: str = s3_event["object"]["key"]
event_file_name: str = os.path.basename(event_object_key)
event_folder_name: str = os.path.dirname(event_object_key).split('/')[0]
return event_bucket_name, event_object_key, event_file_name, event_folder_name
def delete_doing_file(event: dict) -> None:
""".doingファイルをバケット上から削除する"""
# イベント情報を取得
(
event_bucket_name,
event_object_key,
_,
_
) = get_s3_event_parameter(event)
# ⑨ メモリに保持したバケット名/フォルダ名内の「受信データファイル名.doing」ファイルを削除する
s3_client.delete_object(
Bucket=event_bucket_name, Key=f'{event_object_key}{EXCLUSIVE_CONTROL_FILE_EXT}')
def lambda_handler(event, context):
"""Lambdaハンドラー関数"""
# ① 処理開始ログを出力する
logger.info('I-01-01 処理開始 S3バケット間ファイル転送処理')
# ② 処理開始時に受け取ったイベント情報をログに出力する
# バケット名・フォルダ名・受信データファイル名をメモリに保持
(
event_bucket_name,
event_object_key,
event_file_name,
event_folder_name
) = get_s3_event_parameter(event)
try:
logger.info(f'I-02-01 受信バケット:{event_bucket_name}')
logger.info(f'I-02-01 フォルダ名:{event_folder_name}')
logger.info(f'I-02-01 受信ファイル名:{event_file_name}')
# ③ S3イベントによるLambdaの重複発火防止の為、メモリに保持したバケット名/フォルダ名内に、「受信データファイル名.doing」ファイルが存在するかチェックする
try:
s3_client.head_object(
Bucket=event_bucket_name, Key=f'{event_object_key}{EXCLUSIVE_CONTROL_FILE_EXT}')
logger.error(
f'E-01-01 {event_bucket_name}/{event_object_key}は現在処理中です。処理を終了します。')
return
except Exception:
# .doingファイルが見つからなかった場合は、処理を続行する
# メモリに保持したバケット名/フォルダ名内に、「受信データファイル名.doing」ファイルを作成する
logger.info(
f'I-03-01 {event_bucket_name}/{event_object_key}を転送します')
s3_client.put_object(
Bucket=event_bucket_name, Key=f'{event_object_key}{EXCLUSIVE_CONTROL_FILE_EXT}', Body=b'')
# ④ バケット転送設定ファイルを特定する
transfer_config_file_response = s3_client.get_object(
Bucket=CONFIG_BUCKET_NAME, Key=f'{BUCKET_TRANSFER_SETTING_FILE_FOLDER}/{BUCKET_TRANSFER_SETTING_FILE_NAME}')
transfer_config_file = json.loads(
transfer_config_file_response['Body'].read().decode('utf8'))
# ⑤ バケット転送設定ファイルのキー[受信ファイル名正規表現パターン]と、[メモリに保持した受信ファイル名]と一致するものを取得する。
transfer_config = None
for key in transfer_config_file.keys():
filename_regex = re.compile(key)
match_result = filename_regex.fullmatch(event_file_name)
if match_result is not None:
transfer_config = transfer_config_file[key]
break
if transfer_config is None:
logger.error(
f'E-03-01 S3バケットの転送設定が見つかりません。{CONFIG_BUCKET_NAME}/{BUCKET_TRANSFER_SETTING_FILE_FOLDER}/{BUCKET_TRANSFER_SETTING_FILE_NAME}')
delete_doing_file(event)
return
# ⑥ 受信ファイルを、⑤でメモリ上に保持したJSONオブジェクトの設定内容に基づき、バックアップする
if transfer_config.get('backup_setting', None) is not None:
backup_setting = transfer_config['backup_setting']
copy_source = {'Bucket': event_bucket_name,
'Key': event_object_key}
backup_bucket = backup_setting['backup_bucket'].format(env=ENV)
backup_date_pattern = datetime.date.today().strftime(
backup_setting['date_pattern'])
s3_client.copy_object(
Bucket=backup_bucket,
Key=f'{event_folder_name}/{backup_date_pattern}/{event_file_name}',
CopySource=copy_source
)
logger.info(
f'I-04-01 受信ファイルのバックアップ完了::{backup_bucket}/{event_folder_name}/{backup_date_pattern}/{event_file_name}')
# ⑦ 受信ファイルを、⑤でメモリ上に保持したJSONオブジェクトの設定内容に基づき、移動する
destination_bucket = transfer_config['destination_bucket'].format(
env=ENV)
destination_folder = transfer_config['destination_folder']
s3_client.copy_object(
Bucket=destination_bucket,
Key=f"{destination_folder}/{event_file_name}",
CopySource=copy_source
)
# コピー後、元のバケットからは削除する
s3_client.delete_object(Bucket=event_bucket_name, Key=event_object_key)
logger.info(
f'I-05-01 受信ファイルの転送完了:{destination_bucket}/{destination_folder}/{event_file_name}')
# ⑧ メモリに保持したバケット名/フォルダ名内の「受信データファイル名.doing」ファイルを削除する
delete_doing_file(event)
logger.info('I-06-01 処理終了 S3バケット間ファイル転送処理')
except Exception as e:
logger.exception(
f'E-99 想定外のエラーが発生しました。処理を終了します。ファイル名フルパス: {event_bucket_name}/{event_object_key} 例外内容:{e}'
)
delete_doing_file(event)
raise e
return
# 動作確認用のコード
# if __name__ == '__main__':
# lambda_handler(
# {
# "Records": [
# {
# "eventVersion": "2.1",
# "eventSource": "aws:s3",
# "awsRegion": "ap-northeast-1",
# "eventTime": "2024-07-16T07:10:33.021Z",
# "eventName": "ObjectCreated:Put",
# "userIdentity": {
# "principalId": "AWS:AIDA4A3J5AIPDAT6MUJPZ"
# },
# "requestParameters": {
# "sourceIPAddress": "118.238.231.215"
# },
# "responseElements": {
# "x-amz-request-id": "0BST21P92A15BH55",
# "x-amz-id-2": "db9n9RpQxHEnq5o5ZLCeIGpuka54ghMHcbJ2Rj9aCcpjf111D4dyTZn5w5VvzV6W56rU89cSx/ihzkEHs8wk30ckbtRMYQ0byJn0UfK6bjg="
# },
# "s3": {
# "s3SchemaVersion": "1.0",
# "configurationId": "accesslog-receive-event2",
# "bucket": {
# "name": "mbj-newdwh2021-staging-hcp-web-receive",
# "ownerIdentity": {
# "principalId": "A1YQ10QIZBI5OE"
# },
# "arn": "arn:aws:s3:::mbj-newdwh2021-staging-hcp-web-receive"
# },
# "object": {
# "key": "palantir/hcpweb_accesslog_2024-07-16-071045.csv",
# "size": 597820,
# "eTag": "94299e880925b6f655c090521ff83d7a",
# "sequencer": "0066961CE8E7A670F2"
# }
# }
# }
# ]
# },
# None
# )

View File

@ -84,7 +84,7 @@ SET @upsert_statement_base =
MSJ_SIPAGL_comment__c, MSJ_SIPAGL_4B__c, MSJ_SIPAGL_5B__c, Location_Text_vod__c, Call_Channel_vod__c, MSJ_SIPAGL_comment__c, MSJ_SIPAGL_4B__c, MSJ_SIPAGL_5B__c, Location_Text_vod__c, Call_Channel_vod__c,
MSJ_Scientific_Interaction__c, MSJ_Activity_Email_Reply__c, MSJ_Interaction_Duration__c, MSJ_SIPAGL_1A_date__c, MSJ_Scientific_Interaction__c, MSJ_Activity_Email_Reply__c, MSJ_Interaction_Duration__c, MSJ_SIPAGL_1A_date__c,
MSJ_CoPromotion__c, Call_Channel_Formula_vod__c, Meeting_Request_vod__c, Phone_vod__c, Detail_Section_Attribute_vod__c, Remote_Meeting_Type_vod__c, MSJ_CoPromotion__c, Call_Channel_Formula_vod__c, Meeting_Request_vod__c, Phone_vod__c, Detail_Section_Attribute_vod__c, Remote_Meeting_Type_vod__c,
file_name, file_row_cnt, delete_flg, ins_user, ins_date, upd_user, upd_date) MSJ_SIPAGL_6__c,file_name, file_row_cnt, delete_flg, ins_user, ins_date, upd_user, upd_date)
SELECT SELECT
Id, OwnerId, IsDeleted, Name, RecordTypeId, CreatedDate, CreatedById, LastModifiedDate, LastModifiedById, Id, OwnerId, IsDeleted, Name, RecordTypeId, CreatedDate, CreatedById, LastModifiedDate, LastModifiedById,
SystemModstamp, LastActivityDate, MayEdit, IsLocked, LastViewedDate, LastReferencedDate, Call_Comments_vod__c, SystemModstamp, LastActivityDate, MayEdit, IsLocked, LastViewedDate, LastReferencedDate, Call_Comments_vod__c,
@ -130,7 +130,7 @@ SET @upsert_statement_base =
MSJ_SIPAGL_comment__c, MSJ_SIPAGL_4B__c, MSJ_SIPAGL_5B__c, Location_Text_vod__c, Call_Channel_vod__c, MSJ_SIPAGL_comment__c, MSJ_SIPAGL_4B__c, MSJ_SIPAGL_5B__c, Location_Text_vod__c, Call_Channel_vod__c,
MSJ_Scientific_Interaction__c, MSJ_Activity_Email_Reply__c, MSJ_Interaction_Duration__c, MSJ_SIPAGL_1A_date__c, MSJ_Scientific_Interaction__c, MSJ_Activity_Email_Reply__c, MSJ_Interaction_Duration__c, MSJ_SIPAGL_1A_date__c,
MSJ_CoPromotion__c, Call_Channel_Formula_vod__c, Meeting_Request_vod__c, Phone_vod__c, Detail_Section_Attribute_vod__c, Remote_Meeting_Type_vod__c, MSJ_CoPromotion__c, Call_Channel_Formula_vod__c, Meeting_Request_vod__c, Phone_vod__c, Detail_Section_Attribute_vod__c, Remote_Meeting_Type_vod__c,
file_name, file_row_cnt, delete_flg, ins_user, ins_date, upd_user, upd_date MSJ_SIPAGL_6__c,file_name, file_row_cnt, delete_flg, ins_user, ins_date, upd_user, upd_date
FROM FROM
internal02.crm_Call2_vod__c AS internaltb internal02.crm_Call2_vod__c AS internaltb
WHERE WHERE
@ -246,7 +246,7 @@ SET @upsert_statement_base =
Call_Channel_Formula_vod__c = internaltb.Call_Channel_Formula_vod__c, Call_Channel_Formula_vod__c = internaltb.Call_Channel_Formula_vod__c,
Meeting_Request_vod__c = internaltb.Meeting_Request_vod__c, Phone_vod__c = internaltb.Phone_vod__c, Meeting_Request_vod__c = internaltb.Meeting_Request_vod__c, Phone_vod__c = internaltb.Phone_vod__c,
Detail_Section_Attribute_vod__c = internaltb.Detail_Section_Attribute_vod__c, Remote_Meeting_Type_vod__c = internaltb.Remote_Meeting_Type_vod__c, Detail_Section_Attribute_vod__c = internaltb.Detail_Section_Attribute_vod__c, Remote_Meeting_Type_vod__c = internaltb.Remote_Meeting_Type_vod__c,
file_name = internaltb.file_name, file_row_cnt = internaltb.file_row_cnt, MSJ_SIPAGL_6__c = internaltb.MSJ_SIPAGL_6__c,file_name = internaltb.file_name, file_row_cnt = internaltb.file_row_cnt,
upd_user = CURRENT_USER(), upd_date = CURRENT_TIMESTAMP();'; upd_user = CURRENT_USER(), upd_date = CURRENT_TIMESTAMP();';
OPEN table_cursor; OPEN table_cursor;

View File

@ -0,0 +1,17 @@
-- A5M2で実行時に[SQL] - [スラッシュ(/)のみの行でSQLを区切る]に変えてから実行する
CREATE FUNCTION medaca_common.convert_to_date(date_string VARCHAR(255), _format VARCHAR(50)) RETURNS datetime
DETERMINISTIC
BEGIN
DECLARE converted_date DATETIME;
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
-- エラー発生時にNULLを返す
RETURN NULL;
END;
-- 日付変換の実行
SET converted_date = STR_TO_DATE(date_string, _format);
RETURN converted_date;
END

View File

@ -1,12 +1,12 @@
2024/01/03 2025/01/03
2024/02/03 2025/02/03
2024/03/03 2025/03/03
2024/04/03 2025/04/03
2024/05/03 2025/05/03
2024/06/03 2025/06/03
2024/07/03 2025/07/03
2024/08/03 2025/08/03
2024/09/03 2025/09/03
2024/10/03 2025/10/03
2024/11/03 2025/11/03
2024/12/03 2025/12/03

View File

@ -1,6 +1,6 @@
宛先各位 宛先各位
 SAP月次I/Fである以下のファイルを受領しましたので、通知いたします。  SAP月次連携として、以下のファイルを受領しましたので通知いたします。
{notice_file_names} {notice_file_names}
 尚、本メールはシステム自動送信のため、返信は出来ません。  尚、本メールはシステム自動送信のため、返信は出来ません。
 本件に関する問い合わせは、IT部門 ゴザリ様にお願いいたします。  本件に関する問い合わせは、SAP担当者にお願いいたします。

View File

@ -1 +1 @@
【MeDaCa連携通知】SAP Finance 月次ファイルを受領しました 【MeDaCa連携通知】SAP Finance 月次連携ファイルを受領しました

View File

@ -1,8 +1,8 @@
宛先各位 宛先各位
 SAP日次I/Fである以下のファイルを受領できておりません。  SAP日次連携として、以下のファイルを受領できておりません。
{notice_file_names} {notice_file_names}
 SAPシステム側のSFTP送信状況のご確認をお願いいたします。  SAPシステム側のSFTP送信状況のご確認をお願いいたします。
 尚、本メールはシステム自動送信のため、返信は出来ません。  尚、本メールはシステム自動送信のため、返信は出来ません。
 本件に関する問い合わせは、IT部門 ゴザリ様にお願いいたします。  本件に関する問い合わせは、SAP担当者にお願いいたします。

View File

@ -1,8 +1,8 @@
宛先各位 宛先各位
 SAP月次I/Fである以下のファイルを受領できておりません。  SAP月次連携として、以下のファイルを受領できておりません。
{notice_file_names} {notice_file_names}
 SAPシステム側のSFTP送信状況のご確認をお願いいたします。  SAPシステム側のSFTP送信状況のご確認をお願いいたします。
 尚、本メールはシステム自動送信のため、返信は出来ません。  尚、本メールはシステム自動送信のため、返信は出来ません。
 本件に関する問い合わせは、IT部門 ゴザリ様にお願いいたします。  本件に関する問い合わせは、SAP担当者にお願いいたします。

View File

@ -1 +1 @@
【MeDaCa連携エラー通知】SAP Finance 日次ファイル未受領 【MeDaCa連携エラー通知】SAP Finance 日次連携ファイル未受領

View File

@ -1 +1 @@
【MeDaCa連携エラー通知】SAP Finance 月次ファイル未受領 【MeDaCa連携エラー通知】SAP Finance 月次連携ファイル未受領

View File

@ -1,6 +1,6 @@
宛先各位 宛先各位
 SAP月次I/Fである以下のファイルを受領しましたので、通知いたします。  SAP月次連携として、以下のファイルを受領しましたので通知いたします。
{notice_file_names} {notice_file_names}
 尚、本メールはシステム自動送信のため、返信は出来ません。  尚、本メールはシステム自動送信のため、返信は出来ません。
 本件に関する問い合わせは、IT部門 ゴザリ様にお願いいたします。  本件に関する問い合わせは、SAP担当者にお願いいたします。

View File

@ -1 +1 @@
【MeDaCa連携通知】SAP SupplyChain 月次ファイルを受領しました 【MeDaCa連携通知】SAP SupplyChain 月次連携ファイルを受領しました

View File

@ -1,8 +1,8 @@
宛先各位 宛先各位
 SAP日次I/Fである以下のファイルを受領できておりません。  SAP日次連携として、以下のファイルを受領できておりません。
{notice_file_names} {notice_file_names}
 SAPシステム側のSFTP送信状況のご確認をお願いいたします。  SAPシステム側のSFTP送信状況のご確認をお願いいたします。
 尚、本メールはシステム自動送信のため、返信は出来ません。  尚、本メールはシステム自動送信のため、返信は出来ません。
 本件に関する問い合わせは、IT部門 ゴザリ様にお願いいたします。  本件に関する問い合わせは、SAP担当者にお願いいたします。

View File

@ -1,8 +1,8 @@
宛先各位 宛先各位
 SAP月次I/Fである以下のファイルを受領できておりません。  SAP月次連携として、以下のファイルを受領できておりません。
{notice_file_names} {notice_file_names}
 SAPシステム側のSFTP送信状況のご確認をお願いいたします。  SAPシステム側のSFTP送信状況のご確認をお願いいたします。
 尚、本メールはシステム自動送信のため、返信は出来ません。  尚、本メールはシステム自動送信のため、返信は出来ません。
 本件に関する問い合わせは、IT部門 ゴザリ様にお願いいたします。  本件に関する問い合わせは、SAP担当者にお願いいたします。

View File

@ -1 +1 @@
【MeDaCa連携エラー通知】SAP SupplyChain 日次ファイル未受領 【MeDaCa連携エラー通知】SAP SupplyChain 日次連携ファイル未受領

View File

@ -1 +1 @@
【MeDaCa連携エラー通知】SAP SupplyChain 月次ファイル未受領 【MeDaCa連携エラー通知】SAP SupplyChain 月次連携ファイル未受領

View File

@ -0,0 +1,16 @@
{
"hcpweb_accesslog_\\d{4}-\\d{2}-\\d{2}-\\d{6}\\.(csv|CSV)": {
"Description": {
"データソース名": "hcp_web",
"送信元システム名": "Palantir",
"データの論理名(説明)": "HCPウェブアクセスログデータ",
"特記事項": "日〜金 AM1:00にMeDaCAへ連携"
},
"destination_bucket": "mbj-newdwh2021-{env}-data",
"destination_folder": "hcp_web/target",
"backup_setting": {
"backup_bucket": "mbj-newdwh2021-{env}-backup-hcp-web",
"date_pattern": "%Y/%m/%d"
}
}
}

View File

@ -0,0 +1,4 @@
{
"last_fetch_datetime_from": "1900-01-01T00:00:00.000Z",
"last_fetch_datetime_to": ""
}

View File

@ -0,0 +1,4 @@
{
"last_fetch_datetime_from": "1900-01-01T00:00:00.000Z",
"last_fetch_datetime_to": ""
}

View File

@ -281,7 +281,8 @@
"Meeting_Request_vod__c", "Meeting_Request_vod__c",
"Phone_vod__c", "Phone_vod__c",
"Detail_Section_Attribute_vod__c", "Detail_Section_Attribute_vod__c",
"Remote_Meeting_Type_vod__c" "Remote_Meeting_Type_vod__c",
"MSJ_SIPAGL_6__c"
], ],
"is_skip": false, "is_skip": false,
"is_update_last_fetch_datetime": true "is_update_last_fetch_datetime": true
@ -413,7 +414,10 @@
"ewizard_link__c", "ewizard_link__c",
"keywords__c", "keywords__c",
"original_material_approved_in_veritas__c", "original_material_approved_in_veritas__c",
"trade_team__c" "trade_team__c",
"Publish_Method_vod__c",
"MSJ_Key_Presentation__c",
"MSJ_CLM_Report_Name__c"
], ],
"is_skip": false, "is_skip": false,
"is_update_last_fetch_datetime": true "is_update_last_fetch_datetime": true
@ -627,7 +631,8 @@
"MSJ_DirectMail_Status__c", "MSJ_DirectMail_Status__c",
"EM_Event_Team_Member_vod__c", "EM_Event_Team_Member_vod__c",
"Group_Name_vod__c", "Group_Name_vod__c",
"Role_vod__c" "Role_vod__c",
"MSJ_Attendee_Media__c"
], ],
"is_skip": false, "is_skip": false,
"is_update_last_fetch_datetime": true "is_update_last_fetch_datetime": true
@ -701,7 +706,8 @@
"trade_team__c", "trade_team__c",
"MSJ_Start_Date__c", "MSJ_Start_Date__c",
"MSJ_End_Date__c", "MSJ_End_Date__c",
"MSJ_Strategic_Message__c" "MSJ_Strategic_Message__c",
"Media_Type_vod__c"
], ],
"is_skip": false, "is_skip": false,
"is_update_last_fetch_datetime": true "is_update_last_fetch_datetime": true
@ -782,7 +788,8 @@
"MSJ_CE_SIPAGL_Comment__c", "MSJ_CE_SIPAGL_Comment__c",
"MSJ_CE_SIPAGL_1A_date__c", "MSJ_CE_SIPAGL_1A_date__c",
"MSJ_CE_SIPAGL_6__c", "MSJ_CE_SIPAGL_6__c",
"MSJ_mc_campaign_code__c" "MSJ_mc_campaign_code__c",
"MSJ_CE_SIPAGL_7__c"
], ],
"is_skip": false, "is_skip": false,
"is_update_last_fetch_datetime": true "is_update_last_fetch_datetime": true
@ -954,7 +961,35 @@
"MSJ_Comment_from_AM__c", "MSJ_Comment_from_AM__c",
"MSJ_Efforts_of_Month__c", "MSJ_Efforts_of_Month__c",
"MSJ_Efforts_of_Year__c", "MSJ_Efforts_of_Year__c",
"MSJ_Skill_Task__c" "MSJ_Skill_Task__c",
"MSJ_SK_11__c",
"MSJ_SK_12__c",
"MSJ_SK_13__c",
"MSJ_SK_14__c",
"MSJ_SK_15__c",
"MSJ_SK_16__c",
"MSJ_SK_17__c",
"SK_Special_Note_01__c",
"SK_Special_Note_09__c",
"MSJ_Overcome_Special_Note_01__c",
"SK_Special_Note_02__c",
"SK_Special_Note_03__c",
"SK_Special_Note_04__c",
"SK_Special_Note_05__c",
"SK_Special_Note_06__c",
"SK_Special_Note_07__c",
"SK_Special_Note_08__c",
"MSJ_Overcome_Special_Note_02__c",
"MSJ_Overcome_Special_Note_03__c",
"MSJ_Overcome_Special_Note_04__c",
"MSJ_Interview_Prep_Special_Note01__c",
"MSJ_Interview_Prep_Special_Note02__c",
"MSJ_After_Call_09__c",
"MSJ_After_Call_10__c",
"MSJ_After_Call_11__c",
"MSJ_Interview_Prep_Reject_Reason__c",
"After_Call_Reject_Reason__c",
"After_Call_Special_Note__c"
], ],
"is_skip": false, "is_skip": false,
"is_update_last_fetch_datetime": true "is_update_last_fetch_datetime": true
@ -1330,7 +1365,6 @@
"PermissionsMergeTopics", "PermissionsMergeTopics",
"PermissionsSubscribeToLightningReports", "PermissionsSubscribeToLightningReports",
"PermissionsManagePvtRptsAndDashbds", "PermissionsManagePvtRptsAndDashbds",
"PermissionsAllowLightningLogin",
"PermissionsCampaignInfluence2", "PermissionsCampaignInfluence2",
"PermissionsViewDataAssessment", "PermissionsViewDataAssessment",
"PermissionsCanApproveFeedPost", "PermissionsCanApproveFeedPost",
@ -1365,12 +1399,10 @@
"PermissionsApexRestServices", "PermissionsApexRestServices",
"PermissionsEnableCommunityAppLauncher", "PermissionsEnableCommunityAppLauncher",
"PermissionsGiveRecognitionBadge", "PermissionsGiveRecognitionBadge",
"PermissionsAllowObjectDetection",
"PermissionsSalesforceIQInternal", "PermissionsSalesforceIQInternal",
"PermissionsUseMySearch", "PermissionsUseMySearch",
"PermissionsLtngPromoReserved01UserPerm", "PermissionsLtngPromoReserved01UserPerm",
"PermissionsManageSubscriptions", "PermissionsManageSubscriptions",
"PermissionsAllowObjectDetectionTraining",
"PermissionsManageSurveys", "PermissionsManageSurveys",
"PermissionsUseAssistantDialog", "PermissionsUseAssistantDialog",
"PermissionsUseQuerySuggestions", "PermissionsUseQuerySuggestions",
@ -1410,17 +1442,16 @@
"PermissionsQuipMetricsAccess", "PermissionsQuipMetricsAccess",
"PermissionsQuipUserEngagementMetrics", "PermissionsQuipUserEngagementMetrics",
"PermissionsManageExternalConnections", "PermissionsManageExternalConnections",
"PermissionsAIViewInsightObjects",
"PermissionsAICreateInsightObjects",
"PermissionsViewMLModels",
"PermissionsNativeWebviewScrolling", "PermissionsNativeWebviewScrolling",
"PermissionsViewDeveloperName", "PermissionsViewDeveloperName",
"PermissionsBypassMFAForUiLogins", "PermissionsBypassMFAForUiLogins",
"PermissionsClientSecretRotation",
"PermissionsUpdateReportTypeReferences", "PermissionsUpdateReportTypeReferences",
"PermissionsAccessToServiceProcess", "PermissionsAccessToServiceProcess",
"PermissionsManageOrchInstsAndWorkItems", "PermissionsManageOrchInstsAndWorkItems",
"PermissionsCMSECEAuthoringAccess", "PermissionsCMSECEAuthoringAccess",
"PermissionsManageDataspaceScope",
"PermissionsConfigureDataspaceScope",
"PermissionsViewClientSecret",
"PermissionsEnableIPFSUpload", "PermissionsEnableIPFSUpload",
"PermissionsEnableBCTransactionPolling", "PermissionsEnableBCTransactionPolling",
"PermissionsFSCArcGraphCommunityUser", "PermissionsFSCArcGraphCommunityUser",
@ -1500,6 +1531,7 @@
"VExternal_Id_vod__c", "VExternal_Id_vod__c",
"Viewport_Height_vod__c", "Viewport_Height_vod__c",
"Viewport_Width_vod__c", "Viewport_Width_vod__c",
"Medical_Event_vod__c",
"Color_vod__c", "Color_vod__c",
"Icon_vod__c", "Icon_vod__c",
"MCD_Primary_Key_vod__c", "MCD_Primary_Key_vod__c",
@ -1647,7 +1679,8 @@
"MSJ_Hospital_Name_Disp__c", "MSJ_Hospital_Name_Disp__c",
"MSJ_Hospital__c", "MSJ_Hospital__c",
"MSJ_Chatbot_Check__c", "MSJ_Chatbot_Check__c",
"MSJ_File_Attached__c" "MSJ_File_Attached__c",
"MSJ_Incoming_Call_Date__c"
], ],
"is_skip": false, "is_skip": false,
"is_update_last_fetch_datetime": true "is_update_last_fetch_datetime": true
@ -1690,7 +1723,8 @@
"Vault_Instance_ID_vod__c", "Vault_Instance_ID_vod__c",
"Preference_Modification_vod__c", "Preference_Modification_vod__c",
"Approved_Document_vod__c", "Approved_Document_vod__c",
"Link_Name_vod__c" "Link_Name_vod__c",
"Bot_vod__c"
], ],
"is_skip": false, "is_skip": false,
"is_update_last_fetch_datetime": true "is_update_last_fetch_datetime": true
@ -1741,6 +1775,8 @@
"EmailEncodingKey", "EmailEncodingKey",
"ProfileId", "ProfileId",
"UserType", "UserType",
"StartDay",
"EndDay",
"LanguageLocaleKey", "LanguageLocaleKey",
"EmployeeNumber", "EmployeeNumber",
"DelegatedApproverId", "DelegatedApproverId",
@ -1751,6 +1787,8 @@
"LastModifiedDate", "LastModifiedDate",
"LastModifiedById", "LastModifiedById",
"SystemModstamp", "SystemModstamp",
"PasswordExpirationDate",
"SuAccessExpirationDate",
"OfflineTrialExpirationDate", "OfflineTrialExpirationDate",
"OfflinePdaTrialExpirationDate", "OfflinePdaTrialExpirationDate",
"UserPermissionsMarketingUser", "UserPermissionsMarketingUser",
@ -1802,7 +1840,6 @@
"UserPreferencesShowFaxToGuestUsers", "UserPreferencesShowFaxToGuestUsers",
"UserPreferencesShowStreetAddressToGuestUsers", "UserPreferencesShowStreetAddressToGuestUsers",
"UserPreferencesLightningExperiencePreferred", "UserPreferencesLightningExperiencePreferred",
"UserPreferencesPreviewLightning",
"UserPreferencesHideEndUserOnboardingAssistantModal", "UserPreferencesHideEndUserOnboardingAssistantModal",
"UserPreferencesHideLightningMigrationModal", "UserPreferencesHideLightningMigrationModal",
"UserPreferencesHideSfxWelcomeMat", "UserPreferencesHideSfxWelcomeMat",
@ -1913,9 +1950,7 @@
"MS_Outlook_Last_Push_Activity_vod__c", "MS_Outlook_Last_Push_Activity_vod__c",
"Enable_MS_Outlook_Calendar_vod__c", "Enable_MS_Outlook_Calendar_vod__c",
"Last_iPad_Updates_Applied_vod__c", "Last_iPad_Updates_Applied_vod__c",
"Last_iPhone_Updates_Applied_vod__c", "Last_iPhone_Updates_Applied_vod__c"
"UserPreferencesHideInvoicesRedirectConfirmation",
"UserPreferencesHideStatementsRedirectConfirmation"
], ],
"is_skip": false, "is_skip": false,
"is_update_last_fetch_datetime": true "is_update_last_fetch_datetime": true
@ -2271,6 +2306,7 @@
"MSJ_External_Link_To_Full_H1_Profile__c", "MSJ_External_Link_To_Full_H1_Profile__c",
"MSJ_Industry_Payments_Amount__c", "MSJ_Industry_Payments_Amount__c",
"MSJ_Publication_Count__c", "MSJ_Publication_Count__c",
"MSJ_Old_CIAM_Number__c",
"Mobile_ID_vod__pc", "Mobile_ID_vod__pc",
"H1Insights__H1_NPI_Value_for_Testing__pc", "H1Insights__H1_NPI_Value_for_Testing__pc",
"H1Insights__H1_Person_ID__pc", "H1Insights__H1_Person_ID__pc",
@ -2656,7 +2692,8 @@
"MSJ_Title__c", "MSJ_Title__c",
"MSJ_XLK_Segment__c", "MSJ_XLK_Segment__c",
"MSJ_Main_Treatment_Plan__c", "MSJ_Main_Treatment_Plan__c",
"MSJ_Optimal_Visiting_Hours__c" "MSJ_Optimal_Visiting_Hours__c",
"MSJ_CA_Primary_Parent_Update_Date__c"
], ],
"is_skip": false, "is_skip": false,
"is_update_last_fetch_datetime": true "is_update_last_fetch_datetime": true
@ -3129,7 +3166,8 @@
"Email_Source_vod__c", "Email_Source_vod__c",
"Subject_vod__c", "Subject_vod__c",
"User_Input_Text_vod__c", "User_Input_Text_vod__c",
"Email_Group_Id_vod__c" "Email_Group_Id_vod__c",
"List_Unsubscribe_Header_vod__c"
], ],
"is_skip": false, "is_skip": false,
"is_update_last_fetch_datetime": true "is_update_last_fetch_datetime": true
@ -3184,7 +3222,8 @@
"Category_vod__c", "Category_vod__c",
"MSJ_Data_Id__c", "MSJ_Data_Id__c",
"MSJ_Reason_unformatted__c", "MSJ_Reason_unformatted__c",
"MSJ_reason_id__c" "MSJ_reason_id__c",
"MSJ_use_case__c"
], ],
"is_skip": false, "is_skip": false,
"is_update_last_fetch_datetime": true "is_update_last_fetch_datetime": true
@ -3603,6 +3642,109 @@
], ],
"is_skip": false, "is_skip": false,
"is_update_last_fetch_datetime": true "is_update_last_fetch_datetime": true
},
{
"object_name": "MSJ_Related_External_Account_Data__c",
"columns": [
"Id",
"OwnerId",
"IsDeleted",
"Name",
"CreatedDate",
"CreatedById",
"LastModifiedDate",
"LastModifiedById",
"SystemModstamp",
"LastActivityDate",
"MayEdit",
"IsLocked",
"LastViewedDate",
"LastReferencedDate",
"MSJ_Account__c",
"MSJ_Activation_TS__c",
"MSJ_Address_Line_1__c",
"MSJ_Address_Line_2__c",
"MSJ_Authorization_Time_stamp__c",
"MSJ_Authorization__c",
"MSJ_CIAM_Email__c",
"MSJ_CIAM_Status__c",
"MSJ_CRM_Status__c",
"MSJ_City__c",
"MSJ_Country_picklist__c",
"MSJ_Deactivation_Time_Stamp__c",
"MSJ_Department__c",
"MSJ_Email_Verification_Status__c",
"MSJ_Email_Verification_Time_stamp__c",
"MSJ_Email_Verification__c",
"MSJ_FirstName__c",
"MSJ_Full_Name_Kana__c",
"MSJ_Gender__c",
"MSJ_Interest__c",
"MSJ_Is_Grey_Account__c",
"MSJ_Janrain_uuid__c",
"MSJ_Language__c",
"MSJ_LastName__c",
"MSJ_Mobile__c",
"MSJ_OneKeyId__c",
"MSJ_Phone__c",
"MSJ_Position__c",
"MSJ_Postcode__c",
"MSJ_Profession_Type__c",
"MSJ_Professional_Number__c",
"MSJ_Registration_TS__c",
"MSJ_Registration__c",
"MSJ_Source__c",
"MSJ_Speciality__c",
"MSJ_State_Province__c",
"MSJ_Title__c",
"MSJ_Unique_Id_of_website__c",
"MSJ_Validation_TS__c",
"MSJ_Number_of_Potential_Matches__c",
"mck_Asset__c",
"MSJ_Account_Email__c",
"MSJ_DCF_code__c",
"MSJ_Email_Unmatch_Accepted__c",
"MSJ_Exclude_Match_Process__c",
"MSJ_LastName_Kana__c",
"MSJ_MedPass_ID__c",
"MSJ_Work_Place_DCF__c",
"MSJ_Old_Janrain_uuid__c"
],
"is_skip": false,
"is_update_last_fetch_datetime": true
},
{
"object_name": "MSJ_Related_External_Account_Data_Attrib__c",
"columns": [
"Id",
"IsDeleted",
"Name",
"RecordTypeId",
"CreatedDate",
"CreatedById",
"LastModifiedDate",
"LastModifiedById",
"SystemModstamp",
"MayEdit",
"IsLocked",
"LastViewedDate",
"LastReferencedDate",
"MSJ_Related_External_Account_Data__c",
"MSJ_Active__c",
"MSJ_Terms_Conditions_Details__c",
"MSJ_Terms_Conditions__c",
"MSJ_Channel_Value__c",
"MSJ_Consent_Channel__c",
"MSJ_Consent_Details__c",
"MSJ_Consent_Status__c",
"MSJ_Consent__c",
"MSJ_Therapeutic_Area_TA__c",
"MSJ_Email_Unmatch__c",
"MSJ_WebApp_ClientId__c",
"MSJ_WebApp_ClientName__c"
],
"is_skip": false,
"is_update_last_fetch_datetime": true
} }
] ]
} }

View File

@ -0,0 +1,7 @@
宛先各位
 PalantirのHCPウェブアクセスログデータを受領できておりません。
 Palantir側の送信状況のご確認をお願いいたします。
 尚、本メールはシステム自動送信のため、返信は出来ません。
 本件に関する問い合わせは、HCPウェブアクセスデータ担当者にお願いいたします。

View File

@ -0,0 +1 @@
【MeDaCa連携エラー通知】Palantir HCPウェブアクセスログデータ未受領

View File

@ -0,0 +1,7 @@
宛先各位
 medパス社のHCPウェブアクセスユーザ情報を受領できておりません。
 medパス社へ送信状況のご確認をお願いいたします。
 尚、本メールはシステム自動送信のため、返信は出来ません。
 本件に関する問い合わせは、HCPウェブアクセスデータ担当者にお願いいたします。

View File

@ -0,0 +1 @@
【MeDaCa連携エラー通知】medパス HCPウェブアクセスユーザ情報未受領

View File

@ -0,0 +1 @@
hcpweb_accesslog_\d{4}-\d{2}-\d{2}-\d{6}\.(csv|CSV) Palantir HCPウェブアクセスログデータ

View File

@ -0,0 +1 @@
hcp_web_medpass_user_mst_\d{14}\.(CSV|csv) medパス社ユーザ情報

View File

@ -1,125 +1,3 @@
2023/12/02
2023/12/03
2023/12/09
2023/12/10
2023/12/16
2023/12/17
2023/12/23
2023/12/24
2023/12/29
2023/12/30
2023/12/31
2024/01/01
2024/01/02
2024/01/03
2024/01/06
2024/01/07
2024/01/08
2024/01/13
2024/01/14
2024/01/20
2024/01/21
2024/01/27
2024/01/28
2024/02/03
2024/02/04
2024/02/10
2024/02/11
2024/02/12
2024/02/17
2024/02/18
2024/02/23
2024/02/24
2024/02/25
2024/03/02
2024/03/03
2024/03/09
2024/03/10
2024/03/16
2024/03/17
2024/03/20
2024/03/23
2024/03/24
2024/03/30
2024/03/31
2024/04/06
2024/04/07
2024/04/13
2024/04/14
2024/04/20
2024/04/21
2024/04/27
2024/04/28
2024/04/29
2024/05/03
2024/05/04
2024/05/05
2024/05/06
2024/05/11
2024/05/12
2024/05/18
2024/05/19
2024/05/25
2024/05/26
2024/06/01
2024/06/02
2024/06/08
2024/06/09
2024/06/15
2024/06/16
2024/06/22
2024/06/23
2024/06/29
2024/06/30
2024/07/06
2024/07/07
2024/07/13
2024/07/14
2024/07/15
2024/07/20
2024/07/21
2024/07/27
2024/07/28
2024/08/03
2024/08/04
2024/08/10
2024/08/11
2024/08/12
2024/08/17
2024/08/18
2024/08/24
2024/08/25
2024/08/31
2024/09/01
2024/09/07
2024/09/08
2024/09/14
2024/09/15
2024/09/16
2024/09/21
2024/09/22
2024/09/23
2024/09/28
2024/09/29
2024/10/05
2024/10/06
2024/10/12
2024/10/13
2024/10/14
2024/10/19
2024/10/20
2024/10/26
2024/10/27
2024/11/02
2024/11/03
2024/11/04
2024/11/09
2024/11/10
2024/11/16
2024/11/17
2024/11/23
2024/11/24
2024/11/30
2024/12/01 2024/12/01
2024/12/07 2024/12/07
2024/12/08 2024/12/08
@ -130,4 +8,128 @@
2024/12/28 2024/12/28
2024/12/29 2024/12/29
2024/12/30 2024/12/30
2024/12/31 2024/12/31
2025/01/01
2025/01/02
2025/01/03
2025/01/04
2025/01/05
2025/01/11
2025/01/12
2025/01/13
2025/01/18
2025/01/19
2025/01/25
2025/01/26
2025/02/01
2025/02/02
2025/02/08
2025/02/09
2025/02/11
2025/02/15
2025/02/16
2025/02/22
2025/02/23
2025/02/24
2025/03/01
2025/03/02
2025/03/08
2025/03/09
2025/03/15
2025/03/16
2025/03/20
2025/03/22
2025/03/23
2025/03/29
2025/03/30
2025/04/05
2025/04/06
2025/04/12
2025/04/13
2025/04/19
2025/04/20
2025/04/26
2025/04/27
2025/04/29
2025/05/03
2025/05/04
2025/05/05
2025/05/06
2025/05/10
2025/05/11
2025/05/17
2025/05/18
2025/05/24
2025/05/25
2025/05/31
2025/06/01
2025/06/07
2025/06/08
2025/06/14
2025/06/15
2025/06/21
2025/06/22
2025/06/28
2025/06/29
2025/07/05
2025/07/06
2025/07/12
2025/07/13
2025/07/19
2025/07/20
2025/07/21
2025/07/26
2025/07/27
2025/08/02
2025/08/03
2025/08/09
2025/08/10
2025/08/11
2025/08/16
2025/08/17
2025/08/23
2025/08/24
2025/08/30
2025/08/31
2025/09/06
2025/09/07
2025/09/13
2025/09/14
2025/09/15
2025/09/20
2025/09/21
2025/09/23
2025/09/27
2025/09/28
2025/10/04
2025/10/05
2025/10/11
2025/10/12
2025/10/13
2025/10/18
2025/10/19
2025/10/25
2025/10/26
2025/11/01
2025/11/02
2025/11/03
2025/11/08
2025/11/09
2025/11/15
2025/11/16
2025/11/22
2025/11/23
2025/11/24
2025/11/29
2025/11/30
2025/12/06
2025/12/07
2025/12/13
2025/12/14
2025/12/20
2025/12/21
2025/12/27
2025/12/28
2025/12/29
2025/12/30
2025/12/31

View File

@ -1,13 +1,13 @@
2023/12/14
2024/01/18
2024/02/15
2024/03/14
2024/04/12
2024/05/16
2024/06/14
2024/07/12
2024/08/15
2024/09/13
2024/10/15
2024/11/15
2024/12/13 2024/12/13
2025/01/20
2025/02/17
2025/03/14
2025/04/14
2025/05/16
2025/06/13
2025/07/14
2025/08/15
2025/09/12
2025/10/15
2025/11/17
2025/12/12

View File

@ -1,3 +1,3 @@
{ {
"check_target_schemas": ["custom01", "custom02", "custom03", "custom04"] "check_target_schemas": ["custom01", "custom02", "custom03", "custom04","custom05"]
} }

View File

@ -2,5 +2,4 @@
 customスキーマの以下のviewに「SQL SECURITY INVOKER」オプションが指定されておりません。viewを再作成しオプションを指定してください。  customスキーマの以下のviewに「SQL SECURITY INVOKER」オプションが指定されておりません。viewを再作成しオプションを指定してください。
  {no_option_views}   {no_option_views}
 尚、本メールはシステム自動送信ですので、返信できません。  尚、本メールはシステム自動送信ですので、返信できません。
 本件に関する問い合わせは、IT部門ゴザリ様にお願いいたします。

View File

@ -2,7 +2,6 @@
GRReport_[0-9]{8}_[0-9]{6}\.(TSV|tsv) GRReport.txt GRReport_[0-9]{8}_[0-9]{6}\.(TSV|tsv) GRReport.txt
QAReport_[0-9]{8}_[0-9]{6}\.(TSV|tsv) QAReport.txt QAReport_[0-9]{8}_[0-9]{6}\.(TSV|tsv) QAReport.txt
MLCReport_[0-9]{8}_[0-9]{6}\.(TSV|tsv) MLCReport.txt MLCReport_[0-9]{8}_[0-9]{6}\.(TSV|tsv) MLCReport.txt
MLCReport_[0-9]{8}_[0-9]{6}\.(TSV|tsv) MLCReport.txt
POReport_[0-9]{8}_[0-9]{6}\.(TSV|tsv) POReport.txt POReport_[0-9]{8}_[0-9]{6}\.(TSV|tsv) POReport.txt
StockList_[0-9]{8}_[0-9]{6}\.(TSV|tsv) StockList.txt StockList_[0-9]{8}_[0-9]{6}\.(TSV|tsv) StockList.txt
ConfReport_[0-9]{8}_[0-9]{6}\.(TSV|tsv) ConfReport.txt ConfReport_[0-9]{8}_[0-9]{6}\.(TSV|tsv) ConfReport.txt

File diff suppressed because one or more lines are too long

View File

@ -4,9 +4,9 @@ utf-8
" "
CRLF CRLF
1 1
210 211
Id,OwnerId,IsDeleted,Name,RecordTypeId,CreatedDate,CreatedById,LastModifiedDate,LastModifiedById,SystemModstamp,LastActivityDate,MayEdit,IsLocked,LastViewedDate,LastReferencedDate,Call_Comments_vod__c,Sample_Card_vod__c,Add_Detail_vod__c,Property_vod__c,Account_vod__c,zvod_Product_Discussion_vod__c,Status_vod__c,Parent_Address_vod__c,Account_Plan_vod__c,zvod_SaveNew_vod__c,Next_Call_Notes_vod__c,Pre_Call_Notes_vod__c,Mobile_ID_vod__c,zvod_Account_Credentials_vod_c_vod__c,zvod_Account_Preferred_Name_vod_c_vod__c,zvod_Account_Sample_Status_vod_c_vod__c,zvod_Attendees_vod__c,zvod_Key_Messages_vod__c,zvod_Detailing_vod__c,zvod_Expenses_vod__c,zvod_Followup_vod__c,zvod_Samples_vod__c,zvod_Save_vod__c,zvod_Submit_vod__c,zvod_Delete_vod__c,Activity_Type__c,Significant_Event__c,Location_vod__c,Subject_vod__c,Unlock_vod__c,Call_Datetime_vod__c,Disbursed_To_vod__c,Disclaimer_vod__c,Request_Receipt_vod__c,Signature_Date_vod__c,Signature_vod__c,Territory_vod__c,Submitted_By_Mobile_vod__c,Call_Type_vod__c,Add_Key_Message_vod__c,Address_vod__c,Attendees_vod__c,Attendee_Type_vod__c,Call_Date_vod__c,Detailed_Products_vod__c,No_Disbursement_vod__c,Parent_Call_vod__c,User_vod__c,Contact_vod__c,zvod_Entity_vod__c,Medical_Event_vod__c,Mobile_Created_Datetime_vod__c,Mobile_Last_Modified_Datetime_vod__c,License_vod__c,Is_Parent_Call_vod__c,Entity_Display_Name_vod__c,Override_Lock_vod__c,Last_Device_vod__c,Ship_Address_Line_1_vod__c,Ship_Address_Line_2_vod__c,Ship_City_vod__c,Ship_Country_vod__c,Ship_License_Expiration_Date_vod__c,Ship_License_Status_vod__c,Ship_License_vod__c,Ship_State_vod__c,Ship_To_Address_vod__c,Ship_Zip_vod__c,Ship_To_Address_Text_vod__c,CLM_vod__c,zvod_CLMDetails_vod__c,Is_Sampled_Call_vod__c,zvod_Surveys_vod__c,Presentations_vod__c,Entity_Reference_Id_vod__c,Error_Reference_Call_vod__c,Duration_vod__c,Color_vod__c,Allowed_Products_vod__c,zvod_Attachments_vod__c,Sample_Card_Reason_vod__c,ASSMCA_vod__c,Address_Line_1_vod__c,Address_Line_2_vod__c,City_vod__c,DEA_Address_Line_1_vod__c,DEA_Address_Line_2_vod__c,DEA_Address_vod__c,DEA_City_vod__c,DEA_Expiration_Date_vod__c,DEA_State_vod__c,DEA_Zip_4_vod__c,DEA_Zip_vod__c,DEA_vod__c,Ship_Zip_4_vod__c,State_vod__c,Zip_4_vod__c,Zip_vod__c,Sample_Send_Card_vod__c,zvod_Address_vod_c_DEA_Status_vod_c_vod__c,Signature_Page_Image_vod__c,Credentials_vod__c,Salutation_vod__c,zvod_Account_Call_Reminder_vod_c_vod__c,MSJ_Meeting_Duration__c,MSJ_Double_Visit_AM__c,zvod_Business_Account_vod__c,Product_Priority_1_vod__c,Product_Priority_2_vod__c,Product_Priority_3_vod__c,Product_Priority_4_vod__c,Product_Priority_5_vod__c,zvod_More_Actions_vod__c,zvod_Call_Conflict_Status_vod__c,Signature_Timestamp_vod__c,Expense_Amount_vod__c,Total_Expense_Attendees_Count_vod__c,Attendee_list_vod__c,Expense_Post_Status_vod__c,Attendee_Post_Status_vod__c,Expense_System_External_ID_vod__c,Incurred_Expense_vod__c,Assigner_vod__c,Assignment_Datetime_vod__c,zvod_Call_Objective_vod__c,Signature_Location_Longitude_vod__c,Signature_Location_Latitude_vod__c,Location_Services_Status_vod__c,MSJ_Double_Visit_Other__c,MSJ_Comment__c,MSJ_For_Reporting__c,MSJ_Number_of_Attendees__c,MSJ_Main_Dept__c,Planned_Type_vjh__c,Cobrowse_URL_Participant_vod__c,MSJ_Activity_Method_Text__c,MSJ_Activity_Method__c,MSJ_Classification__c,MSJ_Double_Visit_MSL__c,MSJ_MSL_Comment_for_MR__c,MSJ_APD__c,Medical_Inquiry_vod__c,Suggestion_vod__c,MSJ_Call_Type_MSJ__c,MSJ_Prescription_Request__c,MSJ_Patient_Follow__c,Child_Account_Id_vod__c,Child_Account_vod__c,Location_Id_vod__c,Location_Name_vod__c,MSJ_Comments_about_technology__c,Remote_Meeting_vod__c,Veeva_Remote_Meeting_Id_vod__c,MSJ_Activity_Type_Report__c,MSJ_Activity_Type__c,MSJ_Activity__c,MSJ_Comments__c,MSJ_Therapy__c,MSJ_Time_Hrs__c,EMDS_CO_Reference__c,EMDS_Call_Sub_Type__c,EMDS_Call_Type__c,EMDS_Call_Unsuccessful__c,EMDS_Congress_Type__c,EMDS_Date_of_Service__c,EMDS_Fertility_DisInterest__c,EMDS_Fertility_Interest__c,EMDS_Installed_Equipment__c,EMDS_Pipeline_Stage_Value__c,EMDS_Pipeline_Stage__c,EMDS_Pipeline__c,EMDS_Reason_for_Call__c,EMDS_Training_Completed__c,MSJ_BrainStorming__c,MSJ_SIPAGL_1A__c,MSJ_SIPAGL_1B__c,MSJ_SIPAGL_2__c,MSJ_SIPAGL_3__c,MSJ_SIPAGL_4A__c,MSJ_SIPAGL_5A__c,MSJ_SIPAGL_comment__c,MSJ_SIPAGL_4B__c,MSJ_SIPAGL_5B__c,Location_Text_vod__c,Call_Channel_vod__c,MSJ_Scientific_Interaction__c,MSJ_Activity_Email_Reply__c,MSJ_Interaction_Duration__c,MSJ_SIPAGL_1A_date__c,MSJ_CoPromotion__c,Call_Channel_Formula_vod__c,Meeting_Request_vod__c,Phone_vod__c,Detail_Section_Attribute_vod__c,Remote_Meeting_Type_vod__c Id,OwnerId,IsDeleted,Name,RecordTypeId,CreatedDate,CreatedById,LastModifiedDate,LastModifiedById,SystemModstamp,LastActivityDate,MayEdit,IsLocked,LastViewedDate,LastReferencedDate,Call_Comments_vod__c,Sample_Card_vod__c,Add_Detail_vod__c,Property_vod__c,Account_vod__c,zvod_Product_Discussion_vod__c,Status_vod__c,Parent_Address_vod__c,Account_Plan_vod__c,zvod_SaveNew_vod__c,Next_Call_Notes_vod__c,Pre_Call_Notes_vod__c,Mobile_ID_vod__c,zvod_Account_Credentials_vod_c_vod__c,zvod_Account_Preferred_Name_vod_c_vod__c,zvod_Account_Sample_Status_vod_c_vod__c,zvod_Attendees_vod__c,zvod_Key_Messages_vod__c,zvod_Detailing_vod__c,zvod_Expenses_vod__c,zvod_Followup_vod__c,zvod_Samples_vod__c,zvod_Save_vod__c,zvod_Submit_vod__c,zvod_Delete_vod__c,Activity_Type__c,Significant_Event__c,Location_vod__c,Subject_vod__c,Unlock_vod__c,Call_Datetime_vod__c,Disbursed_To_vod__c,Disclaimer_vod__c,Request_Receipt_vod__c,Signature_Date_vod__c,Signature_vod__c,Territory_vod__c,Submitted_By_Mobile_vod__c,Call_Type_vod__c,Add_Key_Message_vod__c,Address_vod__c,Attendees_vod__c,Attendee_Type_vod__c,Call_Date_vod__c,Detailed_Products_vod__c,No_Disbursement_vod__c,Parent_Call_vod__c,User_vod__c,Contact_vod__c,zvod_Entity_vod__c,Medical_Event_vod__c,Mobile_Created_Datetime_vod__c,Mobile_Last_Modified_Datetime_vod__c,License_vod__c,Is_Parent_Call_vod__c,Entity_Display_Name_vod__c,Override_Lock_vod__c,Last_Device_vod__c,Ship_Address_Line_1_vod__c,Ship_Address_Line_2_vod__c,Ship_City_vod__c,Ship_Country_vod__c,Ship_License_Expiration_Date_vod__c,Ship_License_Status_vod__c,Ship_License_vod__c,Ship_State_vod__c,Ship_To_Address_vod__c,Ship_Zip_vod__c,Ship_To_Address_Text_vod__c,CLM_vod__c,zvod_CLMDetails_vod__c,Is_Sampled_Call_vod__c,zvod_Surveys_vod__c,Presentations_vod__c,Entity_Reference_Id_vod__c,Error_Reference_Call_vod__c,Duration_vod__c,Color_vod__c,Allowed_Products_vod__c,zvod_Attachments_vod__c,Sample_Card_Reason_vod__c,ASSMCA_vod__c,Address_Line_1_vod__c,Address_Line_2_vod__c,City_vod__c,DEA_Address_Line_1_vod__c,DEA_Address_Line_2_vod__c,DEA_Address_vod__c,DEA_City_vod__c,DEA_Expiration_Date_vod__c,DEA_State_vod__c,DEA_Zip_4_vod__c,DEA_Zip_vod__c,DEA_vod__c,Ship_Zip_4_vod__c,State_vod__c,Zip_4_vod__c,Zip_vod__c,Sample_Send_Card_vod__c,zvod_Address_vod_c_DEA_Status_vod_c_vod__c,Signature_Page_Image_vod__c,Credentials_vod__c,Salutation_vod__c,zvod_Account_Call_Reminder_vod_c_vod__c,MSJ_Meeting_Duration__c,MSJ_Double_Visit_AM__c,zvod_Business_Account_vod__c,Product_Priority_1_vod__c,Product_Priority_2_vod__c,Product_Priority_3_vod__c,Product_Priority_4_vod__c,Product_Priority_5_vod__c,zvod_More_Actions_vod__c,zvod_Call_Conflict_Status_vod__c,Signature_Timestamp_vod__c,Expense_Amount_vod__c,Total_Expense_Attendees_Count_vod__c,Attendee_list_vod__c,Expense_Post_Status_vod__c,Attendee_Post_Status_vod__c,Expense_System_External_ID_vod__c,Incurred_Expense_vod__c,Assigner_vod__c,Assignment_Datetime_vod__c,zvod_Call_Objective_vod__c,Signature_Location_Longitude_vod__c,Signature_Location_Latitude_vod__c,Location_Services_Status_vod__c,MSJ_Double_Visit_Other__c,MSJ_Comment__c,MSJ_For_Reporting__c,MSJ_Number_of_Attendees__c,MSJ_Main_Dept__c,Planned_Type_vjh__c,Cobrowse_URL_Participant_vod__c,MSJ_Activity_Method_Text__c,MSJ_Activity_Method__c,MSJ_Classification__c,MSJ_Double_Visit_MSL__c,MSJ_MSL_Comment_for_MR__c,MSJ_APD__c,Medical_Inquiry_vod__c,Suggestion_vod__c,MSJ_Call_Type_MSJ__c,MSJ_Prescription_Request__c,MSJ_Patient_Follow__c,Child_Account_Id_vod__c,Child_Account_vod__c,Location_Id_vod__c,Location_Name_vod__c,MSJ_Comments_about_technology__c,Remote_Meeting_vod__c,Veeva_Remote_Meeting_Id_vod__c,MSJ_Activity_Type_Report__c,MSJ_Activity_Type__c,MSJ_Activity__c,MSJ_Comments__c,MSJ_Therapy__c,MSJ_Time_Hrs__c,EMDS_CO_Reference__c,EMDS_Call_Sub_Type__c,EMDS_Call_Type__c,EMDS_Call_Unsuccessful__c,EMDS_Congress_Type__c,EMDS_Date_of_Service__c,EMDS_Fertility_DisInterest__c,EMDS_Fertility_Interest__c,EMDS_Installed_Equipment__c,EMDS_Pipeline_Stage_Value__c,EMDS_Pipeline_Stage__c,EMDS_Pipeline__c,EMDS_Reason_for_Call__c,EMDS_Training_Completed__c,MSJ_BrainStorming__c,MSJ_SIPAGL_1A__c,MSJ_SIPAGL_1B__c,MSJ_SIPAGL_2__c,MSJ_SIPAGL_3__c,MSJ_SIPAGL_4A__c,MSJ_SIPAGL_5A__c,MSJ_SIPAGL_comment__c,MSJ_SIPAGL_4B__c,MSJ_SIPAGL_5B__c,Location_Text_vod__c,Call_Channel_vod__c,MSJ_Scientific_Interaction__c,MSJ_Activity_Email_Reply__c,MSJ_Interaction_Duration__c,MSJ_SIPAGL_1A_date__c,MSJ_CoPromotion__c,Call_Channel_Formula_vod__c,Meeting_Request_vod__c,Phone_vod__c,Detail_Section_Attribute_vod__c,Remote_Meeting_Type_vod__c,MSJ_SIPAGL_6__c
Id,OwnerId,IsDeleted,Name,RecordTypeId,CreatedDate,CreatedById,LastModifiedDate,LastModifiedById,SystemModstamp,LastActivityDate,MayEdit,IsLocked,LastViewedDate,LastReferencedDate,Call_Comments_vod__c,Sample_Card_vod__c,Add_Detail_vod__c,Property_vod__c,Account_vod__c,zvod_Product_Discussion_vod__c,Status_vod__c,Parent_Address_vod__c,Account_Plan_vod__c,zvod_SaveNew_vod__c,Next_Call_Notes_vod__c,Pre_Call_Notes_vod__c,Mobile_ID_vod__c,zvod_Account_Credentials_vod_c_vod__c,zvod_Account_Preferred_Name_vod_c_vod__c,zvod_Account_Sample_Status_vod_c_vod__c,zvod_Attendees_vod__c,zvod_Key_Messages_vod__c,zvod_Detailing_vod__c,zvod_Expenses_vod__c,zvod_Followup_vod__c,zvod_Samples_vod__c,zvod_Save_vod__c,zvod_Submit_vod__c,zvod_Delete_vod__c,Activity_Type__c,Significant_Event__c,Location_vod__c,Subject_vod__c,Unlock_vod__c,Call_Datetime_vod__c,Disbursed_To_vod__c,Disclaimer_vod__c,Request_Receipt_vod__c,Signature_Date_vod__c,Signature_vod__c,Territory_vod__c,Submitted_By_Mobile_vod__c,Call_Type_vod__c,Add_Key_Message_vod__c,Address_vod__c,Attendees_vod__c,Attendee_Type_vod__c,Call_Date_vod__c,Detailed_Products_vod__c,No_Disbursement_vod__c,Parent_Call_vod__c,User_vod__c,Contact_vod__c,zvod_Entity_vod__c,Medical_Event_vod__c,Mobile_Created_Datetime_vod__c,Mobile_Last_Modified_Datetime_vod__c,License_vod__c,Is_Parent_Call_vod__c,Entity_Display_Name_vod__c,Override_Lock_vod__c,Last_Device_vod__c,Ship_Address_Line_1_vod__c,Ship_Address_Line_2_vod__c,Ship_City_vod__c,Ship_Country_vod__c,Ship_License_Expiration_Date_vod__c,Ship_License_Status_vod__c,Ship_License_vod__c,Ship_State_vod__c,Ship_To_Address_vod__c,Ship_Zip_vod__c,Ship_To_Address_Text_vod__c,CLM_vod__c,zvod_CLMDetails_vod__c,Is_Sampled_Call_vod__c,zvod_Surveys_vod__c,Presentations_vod__c,Entity_Reference_Id_vod__c,Error_Reference_Call_vod__c,Duration_vod__c,Color_vod__c,Allowed_Products_vod__c,zvod_Attachments_vod__c,Sample_Card_Reason_vod__c,ASSMCA_vod__c,Address_Line_1_vod__c,Address_Line_2_vod__c,City_vod__c,DEA_Address_Line_1_vod__c,DEA_Address_Line_2_vod__c,DEA_Address_vod__c,DEA_City_vod__c,DEA_Expiration_Date_vod__c,DEA_State_vod__c,DEA_Zip_4_vod__c,DEA_Zip_vod__c,DEA_vod__c,Ship_Zip_4_vod__c,State_vod__c,Zip_4_vod__c,Zip_vod__c,Sample_Send_Card_vod__c,zvod_Address_vod_c_DEA_Status_vod_c_vod__c,Signature_Page_Image_vod__c,Credentials_vod__c,Salutation_vod__c,zvod_Account_Call_Reminder_vod_c_vod__c,MSJ_Meeting_Duration__c,MSJ_Double_Visit_AM__c,zvod_Business_Account_vod__c,Product_Priority_1_vod__c,Product_Priority_2_vod__c,Product_Priority_3_vod__c,Product_Priority_4_vod__c,Product_Priority_5_vod__c,zvod_More_Actions_vod__c,zvod_Call_Conflict_Status_vod__c,Signature_Timestamp_vod__c,Expense_Amount_vod__c,Total_Expense_Attendees_Count_vod__c,Attendee_list_vod__c,Expense_Post_Status_vod__c,Attendee_Post_Status_vod__c,Expense_System_External_ID_vod__c,Incurred_Expense_vod__c,Assigner_vod__c,Assignment_Datetime_vod__c,zvod_Call_Objective_vod__c,Signature_Location_Longitude_vod__c,Signature_Location_Latitude_vod__c,Location_Services_Status_vod__c,MSJ_Double_Visit_Other__c,MSJ_Comment__c,MSJ_For_Reporting__c,MSJ_Number_of_Attendees__c,MSJ_Main_Dept__c,Planned_Type_vjh__c,Cobrowse_URL_Participant_vod__c,MSJ_Activity_Method_Text__c,MSJ_Activity_Method__c,MSJ_Classification__c,MSJ_Double_Visit_MSL__c,MSJ_MSL_Comment_for_MR__c,MSJ_APD__c,Medical_Inquiry_vod__c,Suggestion_vod__c,MSJ_Call_Type_MSJ__c,MSJ_Prescription_Request__c,MSJ_Patient_Follow__c,Child_Account_Id_vod__c,Child_Account_vod__c,Location_Id_vod__c,Location_Name_vod__c,MSJ_Comments_about_technology__c,Remote_Meeting_vod__c,Veeva_Remote_Meeting_Id_vod__c,MSJ_Activity_Type_Report__c,MSJ_Activity_Type__c,MSJ_Activity__c,MSJ_Comments__c,MSJ_Therapy__c,MSJ_Time_Hrs__c,EMDS_CO_Reference__c,EMDS_Call_Sub_Type__c,EMDS_Call_Type__c,EMDS_Call_Unsuccessful__c,EMDS_Congress_Type__c,EMDS_Date_of_Service__c,EMDS_Fertility_DisInterest__c,EMDS_Fertility_Interest__c,EMDS_Installed_Equipment__c,EMDS_Pipeline_Stage_Value__c,EMDS_Pipeline_Stage__c,EMDS_Pipeline__c,EMDS_Reason_for_Call__c,EMDS_Training_Completed__c,MSJ_BrainStorming__c,MSJ_SIPAGL_1A__c,MSJ_SIPAGL_1B__c,MSJ_SIPAGL_2__c,MSJ_SIPAGL_3__c,MSJ_SIPAGL_4A__c,MSJ_SIPAGL_5A__c,MSJ_SIPAGL_comment__c,MSJ_SIPAGL_4B__c,MSJ_SIPAGL_5B__c,Location_Text_vod__c,Call_Channel_vod__c,MSJ_Scientific_Interaction__c,MSJ_Activity_Email_Reply__c,MSJ_Interaction_Duration__c,MSJ_SIPAGL_1A_date__c,MSJ_CoPromotion__c,Call_Channel_Formula_vod__c,Meeting_Request_vod__c,Phone_vod__c,Detail_Section_Attribute_vod__c,Remote_Meeting_Type_vod__c Id,OwnerId,IsDeleted,Name,RecordTypeId,CreatedDate,CreatedById,LastModifiedDate,LastModifiedById,SystemModstamp,LastActivityDate,MayEdit,IsLocked,LastViewedDate,LastReferencedDate,Call_Comments_vod__c,Sample_Card_vod__c,Add_Detail_vod__c,Property_vod__c,Account_vod__c,zvod_Product_Discussion_vod__c,Status_vod__c,Parent_Address_vod__c,Account_Plan_vod__c,zvod_SaveNew_vod__c,Next_Call_Notes_vod__c,Pre_Call_Notes_vod__c,Mobile_ID_vod__c,zvod_Account_Credentials_vod_c_vod__c,zvod_Account_Preferred_Name_vod_c_vod__c,zvod_Account_Sample_Status_vod_c_vod__c,zvod_Attendees_vod__c,zvod_Key_Messages_vod__c,zvod_Detailing_vod__c,zvod_Expenses_vod__c,zvod_Followup_vod__c,zvod_Samples_vod__c,zvod_Save_vod__c,zvod_Submit_vod__c,zvod_Delete_vod__c,Activity_Type__c,Significant_Event__c,Location_vod__c,Subject_vod__c,Unlock_vod__c,Call_Datetime_vod__c,Disbursed_To_vod__c,Disclaimer_vod__c,Request_Receipt_vod__c,Signature_Date_vod__c,Signature_vod__c,Territory_vod__c,Submitted_By_Mobile_vod__c,Call_Type_vod__c,Add_Key_Message_vod__c,Address_vod__c,Attendees_vod__c,Attendee_Type_vod__c,Call_Date_vod__c,Detailed_Products_vod__c,No_Disbursement_vod__c,Parent_Call_vod__c,User_vod__c,Contact_vod__c,zvod_Entity_vod__c,Medical_Event_vod__c,Mobile_Created_Datetime_vod__c,Mobile_Last_Modified_Datetime_vod__c,License_vod__c,Is_Parent_Call_vod__c,Entity_Display_Name_vod__c,Override_Lock_vod__c,Last_Device_vod__c,Ship_Address_Line_1_vod__c,Ship_Address_Line_2_vod__c,Ship_City_vod__c,Ship_Country_vod__c,Ship_License_Expiration_Date_vod__c,Ship_License_Status_vod__c,Ship_License_vod__c,Ship_State_vod__c,Ship_To_Address_vod__c,Ship_Zip_vod__c,Ship_To_Address_Text_vod__c,CLM_vod__c,zvod_CLMDetails_vod__c,Is_Sampled_Call_vod__c,zvod_Surveys_vod__c,Presentations_vod__c,Entity_Reference_Id_vod__c,Error_Reference_Call_vod__c,Duration_vod__c,Color_vod__c,Allowed_Products_vod__c,zvod_Attachments_vod__c,Sample_Card_Reason_vod__c,ASSMCA_vod__c,Address_Line_1_vod__c,Address_Line_2_vod__c,City_vod__c,DEA_Address_Line_1_vod__c,DEA_Address_Line_2_vod__c,DEA_Address_vod__c,DEA_City_vod__c,DEA_Expiration_Date_vod__c,DEA_State_vod__c,DEA_Zip_4_vod__c,DEA_Zip_vod__c,DEA_vod__c,Ship_Zip_4_vod__c,State_vod__c,Zip_4_vod__c,Zip_vod__c,Sample_Send_Card_vod__c,zvod_Address_vod_c_DEA_Status_vod_c_vod__c,Signature_Page_Image_vod__c,Credentials_vod__c,Salutation_vod__c,zvod_Account_Call_Reminder_vod_c_vod__c,MSJ_Meeting_Duration__c,MSJ_Double_Visit_AM__c,zvod_Business_Account_vod__c,Product_Priority_1_vod__c,Product_Priority_2_vod__c,Product_Priority_3_vod__c,Product_Priority_4_vod__c,Product_Priority_5_vod__c,zvod_More_Actions_vod__c,zvod_Call_Conflict_Status_vod__c,Signature_Timestamp_vod__c,Expense_Amount_vod__c,Total_Expense_Attendees_Count_vod__c,Attendee_list_vod__c,Expense_Post_Status_vod__c,Attendee_Post_Status_vod__c,Expense_System_External_ID_vod__c,Incurred_Expense_vod__c,Assigner_vod__c,Assignment_Datetime_vod__c,zvod_Call_Objective_vod__c,Signature_Location_Longitude_vod__c,Signature_Location_Latitude_vod__c,Location_Services_Status_vod__c,MSJ_Double_Visit_Other__c,MSJ_Comment__c,MSJ_For_Reporting__c,MSJ_Number_of_Attendees__c,MSJ_Main_Dept__c,Planned_Type_vjh__c,Cobrowse_URL_Participant_vod__c,MSJ_Activity_Method_Text__c,MSJ_Activity_Method__c,MSJ_Classification__c,MSJ_Double_Visit_MSL__c,MSJ_MSL_Comment_for_MR__c,MSJ_APD__c,Medical_Inquiry_vod__c,Suggestion_vod__c,MSJ_Call_Type_MSJ__c,MSJ_Prescription_Request__c,MSJ_Patient_Follow__c,Child_Account_Id_vod__c,Child_Account_vod__c,Location_Id_vod__c,Location_Name_vod__c,MSJ_Comments_about_technology__c,Remote_Meeting_vod__c,Veeva_Remote_Meeting_Id_vod__c,MSJ_Activity_Type_Report__c,MSJ_Activity_Type__c,MSJ_Activity__c,MSJ_Comments__c,MSJ_Therapy__c,MSJ_Time_Hrs__c,EMDS_CO_Reference__c,EMDS_Call_Sub_Type__c,EMDS_Call_Type__c,EMDS_Call_Unsuccessful__c,EMDS_Congress_Type__c,EMDS_Date_of_Service__c,EMDS_Fertility_DisInterest__c,EMDS_Fertility_Interest__c,EMDS_Installed_Equipment__c,EMDS_Pipeline_Stage_Value__c,EMDS_Pipeline_Stage__c,EMDS_Pipeline__c,EMDS_Reason_for_Call__c,EMDS_Training_Completed__c,MSJ_BrainStorming__c,MSJ_SIPAGL_1A__c,MSJ_SIPAGL_1B__c,MSJ_SIPAGL_2__c,MSJ_SIPAGL_3__c,MSJ_SIPAGL_4A__c,MSJ_SIPAGL_5A__c,MSJ_SIPAGL_comment__c,MSJ_SIPAGL_4B__c,MSJ_SIPAGL_5B__c,Location_Text_vod__c,Call_Channel_vod__c,MSJ_Scientific_Interaction__c,MSJ_Activity_Email_Reply__c,MSJ_Interaction_Duration__c,MSJ_SIPAGL_1A_date__c,MSJ_CoPromotion__c,Call_Channel_Formula_vod__c,Meeting_Request_vod__c,Phone_vod__c,Detail_Section_Attribute_vod__c,Remote_Meeting_Type_vod__c,MSJ_SIPAGL_6__c
internal02.crm_Call2_vod__c internal02.crm_Call2_vod__c
org02.crm_Call2_vod__c org02.crm_Call2_vod__c
CRM_Call2_vod__c_ex.sql CRM_Call2_vod__c_ex.sql

View File

@ -4,9 +4,9 @@ utf-8
" "
CRLF CRLF
1 1
59 60
Id,IsDeleted,Name,CreatedDate,CreatedById,LastModifiedDate,LastModifiedById,SystemModstamp,MayEdit,IsLocked,LastViewedDate,LastReferencedDate,Parent_Account_vod__c,Child_Account_vod__c,External_ID_vod__c,Mobile_ID_vod__c,Primary_vod__c,Copy_Address_vod__c,Child_Name_vod__c,Parent_Name_vod__c,Parent_Child_Name_vod__c,Account_Code__c,Child_Department__c,Child_Role__c,Child_Title__c,Child_Remark__c,MSJ_1C_segment__c,MSJ_BU_FE__c,MSJ_BU_ONC__c,MSJ_BVC_Segment__c,MSJ_CE_segment__c,MSJ_Child_Account_Link__c,MSJ_DCF_DR_Code__c,MSJ_DCF_HP_Code__c,MSJ_DR_Change_Log__c,MSJ_Delete__c,MSJ_Department__c,MSJ_EB_CRC_Segment__c,MSJ_EB_HN_Segment__c,MSJ_EB_H_N_LA_Segment__c,MSJ_EB_H_N_RM_Segment__c,MSJ_External_ID__c,MSJ_Fax__c,MSJ_GF2_segment__c,MSJ_GF_segment__c,MSJ_KOL_LOL__c,MSJ_KOL__c,MSJ_ONC_HP_Segment__c,MSJ_OPTIN_target__c,MSJ_OV_segment__c,MSJ_Parent_Child_Name__c,MSJ_Phone__c,MSJ_Remark__c,MSJ_Target_Call_Num__c,MSJ_Tech_segment__c,MSJ_Title__c,MSJ_XLK_Segment__c,MSJ_Main_Treatment_Plan__c,MSJ_Optimal_Visiting_Hours__c Id,IsDeleted,Name,CreatedDate,CreatedById,LastModifiedDate,LastModifiedById,SystemModstamp,MayEdit,IsLocked,LastViewedDate,LastReferencedDate,Parent_Account_vod__c,Child_Account_vod__c,External_ID_vod__c,Mobile_ID_vod__c,Primary_vod__c,Copy_Address_vod__c,Child_Name_vod__c,Parent_Name_vod__c,Parent_Child_Name_vod__c,Account_Code__c,Child_Department__c,Child_Role__c,Child_Title__c,Child_Remark__c,MSJ_1C_segment__c,MSJ_BU_FE__c,MSJ_BU_ONC__c,MSJ_BVC_Segment__c,MSJ_CE_segment__c,MSJ_Child_Account_Link__c,MSJ_DCF_DR_Code__c,MSJ_DCF_HP_Code__c,MSJ_DR_Change_Log__c,MSJ_Delete__c,MSJ_Department__c,MSJ_EB_CRC_Segment__c,MSJ_EB_HN_Segment__c,MSJ_EB_H_N_LA_Segment__c,MSJ_EB_H_N_RM_Segment__c,MSJ_External_ID__c,MSJ_Fax__c,MSJ_GF2_segment__c,MSJ_GF_segment__c,MSJ_KOL_LOL__c,MSJ_KOL__c,MSJ_ONC_HP_Segment__c,MSJ_OPTIN_target__c,MSJ_OV_segment__c,MSJ_Parent_Child_Name__c,MSJ_Phone__c,MSJ_Remark__c,MSJ_Target_Call_Num__c,MSJ_Tech_segment__c,MSJ_Title__c,MSJ_XLK_Segment__c,MSJ_Main_Treatment_Plan__c,MSJ_Optimal_Visiting_Hours__c,MSJ_CA_Primary_Parent_Update_Date__c
Id,IsDeleted,Name,CreatedDate,CreatedById,LastModifiedDate,LastModifiedById,SystemModstamp,MayEdit,IsLocked,LastViewedDate,LastReferencedDate,Parent_Account_vod__c,Child_Account_vod__c,External_ID_vod__c,Mobile_ID_vod__c,Primary_vod__c,Copy_Address_vod__c,Child_Name_vod__c,Parent_Name_vod__c,Parent_Child_Name_vod__c,Account_Code__c,Child_Department__c,Child_Role__c,Child_Title__c,Child_Remark__c,MSJ_1C_segment__c,MSJ_BU_FE__c,MSJ_BU_ONC__c,MSJ_BVC_Segment__c,MSJ_CE_segment__c,MSJ_Child_Account_Link__c,MSJ_DCF_DR_Code__c,MSJ_DCF_HP_Code__c,MSJ_DR_Change_Log__c,MSJ_Delete__c,MSJ_Department__c,MSJ_EB_CRC_Segment__c,MSJ_EB_HN_Segment__c,MSJ_EB_H_N_LA_Segment__c,MSJ_EB_H_N_RM_Segment__c,MSJ_External_ID__c,MSJ_Fax__c,MSJ_GF2_segment__c,MSJ_GF_segment__c,MSJ_KOL_LOL__c,MSJ_KOL__c,MSJ_ONC_HP_Segment__c,MSJ_OPTIN_target__c,MSJ_OV_segment__c,MSJ_Parent_Child_Name__c,MSJ_Phone__c,MSJ_Remark__c,MSJ_Target_Call_Num__c,MSJ_Tech_segment__c,MSJ_Title__c,MSJ_XLK_Segment__c,MSJ_Main_Treatment_Plan__c,MSJ_Optimal_Visiting_Hours__c Id,IsDeleted,Name,CreatedDate,CreatedById,LastModifiedDate,LastModifiedById,SystemModstamp,MayEdit,IsLocked,LastViewedDate,LastReferencedDate,Parent_Account_vod__c,Child_Account_vod__c,External_ID_vod__c,Mobile_ID_vod__c,Primary_vod__c,Copy_Address_vod__c,Child_Name_vod__c,Parent_Name_vod__c,Parent_Child_Name_vod__c,Account_Code__c,Child_Department__c,Child_Role__c,Child_Title__c,Child_Remark__c,MSJ_1C_segment__c,MSJ_BU_FE__c,MSJ_BU_ONC__c,MSJ_BVC_Segment__c,MSJ_CE_segment__c,MSJ_Child_Account_Link__c,MSJ_DCF_DR_Code__c,MSJ_DCF_HP_Code__c,MSJ_DR_Change_Log__c,MSJ_Delete__c,MSJ_Department__c,MSJ_EB_CRC_Segment__c,MSJ_EB_HN_Segment__c,MSJ_EB_H_N_LA_Segment__c,MSJ_EB_H_N_RM_Segment__c,MSJ_External_ID__c,MSJ_Fax__c,MSJ_GF2_segment__c,MSJ_GF_segment__c,MSJ_KOL_LOL__c,MSJ_KOL__c,MSJ_ONC_HP_Segment__c,MSJ_OPTIN_target__c,MSJ_OV_segment__c,MSJ_Parent_Child_Name__c,MSJ_Phone__c,MSJ_Remark__c,MSJ_Target_Call_Num__c,MSJ_Tech_segment__c,MSJ_Title__c,MSJ_XLK_Segment__c,MSJ_Main_Treatment_Plan__c,MSJ_Optimal_Visiting_Hours__c,MSJ_CA_Primary_Parent_Update_Date__c
src02.crm_Child_Account_vod__c src02.crm_Child_Account_vod__c
org02.crm_Child_Account_vod__c org02.crm_Child_Account_vod__c
CRM_Child_Account_vod__c_ex.sql CRM_Child_Account_vod__c_ex.sql

View File

@ -4,10 +4,10 @@ utf-8
" "
CRLF CRLF
1 1
46 49
Id,OwnerId,IsDeleted,Name,CreatedDate,CreatedById,LastModifiedDate,LastModifiedById,SystemModstamp,MayEdit,IsLocked,LastViewedDate,LastReferencedDate,Mobile_ID_vod__c,Presentation_Id_vod__c,Product_vod__c,Default_Presentation_vod__c,Training_vod__c,ParentId_vod__c,Hidden_vod__c,Type_vod__c,Approved_vod__c,Copied_From_vod__c,Copy_Date_vod__c,Survey_vod__c,Original_Record_ID_vod__c,Directory_vod__c,End_Date_vod__c,Start_Date_vod__c,Status_vod__c,VExternal_Id_vod__c,Vault_DNS_vod__c,Vault_Doc_Id_vod__c,Vault_External_Id_vod__c,Vault_GUID_vod__c,Vault_Last_Modified_Date_Time_vod__c,Version_vod__c,Enable_Survey_Overlay_vod__c,Description_vod__c,Keywords_vod__c,Content_Channel_vod__c,business_function__c,ewizard_link__c,keywords__c,original_material_approved_in_veritas__c,trade_team__c Id,OwnerId,IsDeleted,Name,CreatedDate,CreatedById,LastModifiedDate,LastModifiedById,SystemModstamp,MayEdit,IsLocked,LastViewedDate,LastReferencedDate,Mobile_ID_vod__c,Presentation_Id_vod__c,Product_vod__c,Default_Presentation_vod__c,Training_vod__c,ParentId_vod__c,Hidden_vod__c,Type_vod__c,Approved_vod__c,Copied_From_vod__c,Copy_Date_vod__c,Survey_vod__c,Original_Record_ID_vod__c,Directory_vod__c,End_Date_vod__c,Start_Date_vod__c,Status_vod__c,VExternal_Id_vod__c,Vault_DNS_vod__c,Vault_Doc_Id_vod__c,Vault_External_Id_vod__c,Vault_GUID_vod__c,Vault_Last_Modified_Date_Time_vod__c,Version_vod__c,Enable_Survey_Overlay_vod__c,Description_vod__c,Keywords_vod__c,Content_Channel_vod__c,business_function__c,ewizard_link__c,keywords__c,original_material_approved_in_veritas__c,trade_team__c,Publish_Method_vod__c,MSJ_Key_Presentation__c,MSJ_CLM_Report_Name__c
Id,OwnerId,IsDeleted,Name,CreatedDate,CreatedById,LastModifiedDate,LastModifiedById,SystemModstamp,MayEdit,IsLocked,LastViewedDate,LastReferencedDate,Mobile_ID_vod__c,Presentation_Id_vod__c,Product_vod__c,Default_Presentation_vod__c,Training_vod__c,ParentId_vod__c,Hidden_vod__c,Type_vod__c,Approved_vod__c,Copied_From_vod__c,Copy_Date_vod__c,Survey_vod__c,Original_Record_ID_vod__c,Directory_vod__c,End_Date_vod__c,Start_Date_vod__c,Status_vod__c,VExternal_Id_vod__c,Vault_DNS_vod__c,Vault_Doc_Id_vod__c,Vault_External_Id_vod__c,Vault_GUID_vod__c,Vault_Last_Modified_Date_Time_vod__c,Version_vod__c,Enable_Survey_Overlay_vod__c,Description_vod__c,Keywords_vod__c,Content_Channel_vod__c,business_function__c,ewizard_link__c,keywords__c,original_material_approved_in_veritas__c,trade_team__c Id,OwnerId,IsDeleted,Name,CreatedDate,CreatedById,LastModifiedDate,LastModifiedById,SystemModstamp,MayEdit,IsLocked,LastViewedDate,LastReferencedDate,Mobile_ID_vod__c,Presentation_Id_vod__c,Product_vod__c,Default_Presentation_vod__c,Training_vod__c,ParentId_vod__c,Hidden_vod__c,Type_vod__c,Approved_vod__c,Copied_From_vod__c,Copy_Date_vod__c,Survey_vod__c,Original_Record_ID_vod__c,Directory_vod__c,End_Date_vod__c,Start_Date_vod__c,Status_vod__c,VExternal_Id_vod__c,Vault_DNS_vod__c,Vault_Doc_Id_vod__c,Vault_External_Id_vod__c,Vault_GUID_vod__c,Vault_Last_Modified_Date_Time_vod__c,Version_vod__c,Enable_Survey_Overlay_vod__c,Description_vod__c,Keywords_vod__c,Content_Channel_vod__c,business_function__c,ewizard_link__c,keywords__c,original_material_approved_in_veritas__c,trade_team__c,Publish_Method_vod__c,MSJ_Key_Presentation__c,MSJ_CLM_Report_Name__c
src02.crm_Clm_Presentation_vod__c src02.crm_Clm_Presentation_vod__c
org02.crm_Clm_Presentation_vod__c org02.crm_Clm_Presentation_vod__c
CRM_Clm_Presentation_vod__c_ex.sql

View File

@ -0,0 +1 @@
CALL internal02.crm_history('src02.crm_Clm_Presentation_vod__c', 'SystemModstamp');

View File

@ -4,9 +4,9 @@ utf-8
" "
CRLF CRLF
1 1
144 172
Id,OwnerId,IsDeleted,Name,RecordTypeId,CreatedDate,CreatedById,LastModifiedDate,LastModifiedById,SystemModstamp,MayEdit,IsLocked,LastViewedDate,LastReferencedDate,Mobile_ID_vod__c,Manager_vod__c,Employee_vod__c,Review_Date__c,Review_Period__c,Status__c,Comments__c,Strategic_Planning__c,Customer_Focus__c,Knowledge_Expertise__c,Business_Account_Planning__c,Call_Productivity__c,Overall_Rating__c,MSJ_A01__c,MSJ_A02__c,MSJ_A03__c,MSJ_AM_Memo__c,MSJ_Aid_Total__c,MSJ_C0_GC__c,MSJ_C1_GC__c,MSJ_C2_GC__c,MSJ_Countermeasure__c,MSJ_Deadline__c,MSJ_Double_Visit_Time__c,MSJ_Hospital__c,MSJ_K01_FE__c,MSJ_K01_ONC__c,MSJ_K02_FE__c,MSJ_K02_ONC__c,MSJ_K03_FE__c,MSJ_K03_ONC__c,MSJ_K04_FE__c,MSJ_K04_ONC__c,MSJ_K05_FE__c,MSJ_K05_ONC__c,MSJ_K06_FE__c,MSJ_K06_ONC__c,MSJ_K0_GC__c,MSJ_K1_GC__c,MSJ_K2_GC__c,MSJ_Knowledge_Total__c,MSJ_L0_GC__c,MSJ_L1_GC__c,MSJ_L2_GC__c,MSJ_MR_GC__c,MSJ_MR_Problems__c,MSJ_N0_GC__c,MSJ_N1_GC__c,MSJ_N2_GC__c,MSJ_Num_of_DTL__c,MSJ_P01__c,MSJ_P02__c,MSJ_P03__c,MSJ_P04__c,MSJ_P05__c,MSJ_P0_GC__c,MSJ_P1_GC__c,MSJ_P2_GC__c,MSJ_PlanningTotal__c,MSJ_R0_GC__c,MSJ_R1_GC__c,MSJ_R2_GC__c,MSJ_S01__c,MSJ_S02__c,MSJ_S03__c,MSJ_S04__c,MSJ_S05__c,MSJ_S06__c,MSJ_S07__c,MSJ_S08__c,MSJ_S09__c,MSJ_S10__c,MSJ_S11__c,MSJ_S12__c,MSJ_Skill_Total__c,MSJ_After_Call_01__c,MSJ_After_Call_02__c,MSJ_After_Call_03__c,MSJ_After_Call_04__c,MSJ_Closing__c,MSJ_Comment_by_MR__c,MSJ_Confirmed_by_MR__c,MSJ_Createdby__c,MSJ_FT_AM_Name__c,MSJ_Interview_Preparation__c,MSJ_Interview_Reflection__c,MSJ_Notify_To_MR__c,MSJ_Opening__c,MSJ_Others_01_Result__c,MSJ_Others_01__c,MSJ_Others_02_Result__c,MSJ_Others_02__c,MSJ_Patient_Thinking__c,MSJ_Probing__c,MSJ_Supporting__c,MSJ_Patient_Thinking_for_FE__c,MSJ_After_Call_05__c,MSJ_After_Call_06__c,MSJ_After_Call_07__c,MSJ_After_Call_08__c,MSJ_Createdby_FE__c,MSJ_Createdby_ONC__c,MSJ_Development_Level__c,MSJ_Interview_Prep_01__c,MSJ_Interview_Prep_02__c,MSJ_Leadership_Style__c,MSJ_Overcome_01__c,MSJ_Overcome_02__c,MSJ_Overcome_03__c,MSJ_Overcome_04__c,MSJ_Review_01__c,MSJ_Review_02__c,MSJ_SK_01__c,MSJ_SK_02__c,MSJ_SK_03__c,MSJ_SK_04__c,MSJ_SK_05__c,MSJ_SK_06__c,MSJ_SK_07__c,MSJ_SK_08__c,MSJ_SK_09__c,MSJ_SK_10__c,MSJ_Specific_Action__c,MSJ_Training_Point__c,MSJ_Achievement_of_This_Month__c,MSJ_Action_of_This_Month__c,MSJ_Comment_from_AM__c,MSJ_Efforts_of_Month__c,MSJ_Efforts_of_Year__c,MSJ_Skill_Task__c Id,OwnerId,IsDeleted,Name,RecordTypeId,CreatedDate,CreatedById,LastModifiedDate,LastModifiedById,SystemModstamp,MayEdit,IsLocked,LastViewedDate,LastReferencedDate,Mobile_ID_vod__c,Manager_vod__c,Employee_vod__c,Review_Date__c,Review_Period__c,Status__c,Comments__c,Strategic_Planning__c,Customer_Focus__c,Knowledge_Expertise__c,Business_Account_Planning__c,Call_Productivity__c,Overall_Rating__c,MSJ_A01__c,MSJ_A02__c,MSJ_A03__c,MSJ_AM_Memo__c,MSJ_Aid_Total__c,MSJ_C0_GC__c,MSJ_C1_GC__c,MSJ_C2_GC__c,MSJ_Countermeasure__c,MSJ_Deadline__c,MSJ_Double_Visit_Time__c,MSJ_Hospital__c,MSJ_K01_FE__c,MSJ_K01_ONC__c,MSJ_K02_FE__c,MSJ_K02_ONC__c,MSJ_K03_FE__c,MSJ_K03_ONC__c,MSJ_K04_FE__c,MSJ_K04_ONC__c,MSJ_K05_FE__c,MSJ_K05_ONC__c,MSJ_K06_FE__c,MSJ_K06_ONC__c,MSJ_K0_GC__c,MSJ_K1_GC__c,MSJ_K2_GC__c,MSJ_Knowledge_Total__c,MSJ_L0_GC__c,MSJ_L1_GC__c,MSJ_L2_GC__c,MSJ_MR_GC__c,MSJ_MR_Problems__c,MSJ_N0_GC__c,MSJ_N1_GC__c,MSJ_N2_GC__c,MSJ_Num_of_DTL__c,MSJ_P01__c,MSJ_P02__c,MSJ_P03__c,MSJ_P04__c,MSJ_P05__c,MSJ_P0_GC__c,MSJ_P1_GC__c,MSJ_P2_GC__c,MSJ_PlanningTotal__c,MSJ_R0_GC__c,MSJ_R1_GC__c,MSJ_R2_GC__c,MSJ_S01__c,MSJ_S02__c,MSJ_S03__c,MSJ_S04__c,MSJ_S05__c,MSJ_S06__c,MSJ_S07__c,MSJ_S08__c,MSJ_S09__c,MSJ_S10__c,MSJ_S11__c,MSJ_S12__c,MSJ_Skill_Total__c,MSJ_After_Call_01__c,MSJ_After_Call_02__c,MSJ_After_Call_03__c,MSJ_After_Call_04__c,MSJ_Closing__c,MSJ_Comment_by_MR__c,MSJ_Confirmed_by_MR__c,MSJ_Createdby__c,MSJ_FT_AM_Name__c,MSJ_Interview_Preparation__c,MSJ_Interview_Reflection__c,MSJ_Notify_To_MR__c,MSJ_Opening__c,MSJ_Others_01_Result__c,MSJ_Others_01__c,MSJ_Others_02_Result__c,MSJ_Others_02__c,MSJ_Patient_Thinking__c,MSJ_Probing__c,MSJ_Supporting__c,MSJ_Patient_Thinking_for_FE__c,MSJ_After_Call_05__c,MSJ_After_Call_06__c,MSJ_After_Call_07__c,MSJ_After_Call_08__c,MSJ_Createdby_FE__c,MSJ_Createdby_ONC__c,MSJ_Development_Level__c,MSJ_Interview_Prep_01__c,MSJ_Interview_Prep_02__c,MSJ_Leadership_Style__c,MSJ_Overcome_01__c,MSJ_Overcome_02__c,MSJ_Overcome_03__c,MSJ_Overcome_04__c,MSJ_Review_01__c,MSJ_Review_02__c,MSJ_SK_01__c,MSJ_SK_02__c,MSJ_SK_03__c,MSJ_SK_04__c,MSJ_SK_05__c,MSJ_SK_06__c,MSJ_SK_07__c,MSJ_SK_08__c,MSJ_SK_09__c,MSJ_SK_10__c,MSJ_Specific_Action__c,MSJ_Training_Point__c,MSJ_Achievement_of_This_Month__c,MSJ_Action_of_This_Month__c,MSJ_Comment_from_AM__c,MSJ_Efforts_of_Month__c,MSJ_Efforts_of_Year__c,MSJ_Skill_Task__c,MSJ_SK_11__c,MSJ_SK_12__c,MSJ_SK_13__c,MSJ_SK_14__c,MSJ_SK_15__c,MSJ_SK_16__c,MSJ_SK_17__c,SK_Special_Note_01__c,SK_Special_Note_09__c,MSJ_Overcome_Special_Note_01__c,SK_Special_Note_02__c,SK_Special_Note_03__c,SK_Special_Note_04__c,SK_Special_Note_05__c,SK_Special_Note_06__c,SK_Special_Note_07__c,SK_Special_Note_08__c,MSJ_Overcome_Special_Note_02__c,MSJ_Overcome_Special_Note_03__c,MSJ_Overcome_Special_Note_04__c,MSJ_Interview_Prep_Special_Note01__c,MSJ_Interview_Prep_Special_Note02__c,MSJ_After_Call_09__c,MSJ_After_Call_10__c,MSJ_After_Call_11__c,MSJ_Interview_Prep_Reject_Reason__c,After_Call_Reject_Reason__c,After_Call_Special_Note__c
Id,OwnerId,IsDeleted,Name,RecordTypeId,CreatedDate,CreatedById,LastModifiedDate,LastModifiedById,SystemModstamp,MayEdit,IsLocked,LastViewedDate,LastReferencedDate,Mobile_ID_vod__c,Manager_vod__c,Employee_vod__c,Review_Date__c,Review_Period__c,Status__c,Comments__c,Strategic_Planning__c,Customer_Focus__c,Knowledge_Expertise__c,Business_Account_Planning__c,Call_Productivity__c,Overall_Rating__c,MSJ_A01__c,MSJ_A02__c,MSJ_A03__c,MSJ_AM_Memo__c,MSJ_Aid_Total__c,MSJ_C0_GC__c,MSJ_C1_GC__c,MSJ_C2_GC__c,MSJ_Countermeasure__c,MSJ_Deadline__c,MSJ_Double_Visit_Time__c,MSJ_Hospital__c,MSJ_K01_FE__c,MSJ_K01_ONC__c,MSJ_K02_FE__c,MSJ_K02_ONC__c,MSJ_K03_FE__c,MSJ_K03_ONC__c,MSJ_K04_FE__c,MSJ_K04_ONC__c,MSJ_K05_FE__c,MSJ_K05_ONC__c,MSJ_K06_FE__c,MSJ_K06_ONC__c,MSJ_K0_GC__c,MSJ_K1_GC__c,MSJ_K2_GC__c,MSJ_Knowledge_Total__c,MSJ_L0_GC__c,MSJ_L1_GC__c,MSJ_L2_GC__c,MSJ_MR_GC__c,MSJ_MR_Problems__c,MSJ_N0_GC__c,MSJ_N1_GC__c,MSJ_N2_GC__c,MSJ_Num_of_DTL__c,MSJ_P01__c,MSJ_P02__c,MSJ_P03__c,MSJ_P04__c,MSJ_P05__c,MSJ_P0_GC__c,MSJ_P1_GC__c,MSJ_P2_GC__c,MSJ_PlanningTotal__c,MSJ_R0_GC__c,MSJ_R1_GC__c,MSJ_R2_GC__c,MSJ_S01__c,MSJ_S02__c,MSJ_S03__c,MSJ_S04__c,MSJ_S05__c,MSJ_S06__c,MSJ_S07__c,MSJ_S08__c,MSJ_S09__c,MSJ_S10__c,MSJ_S11__c,MSJ_S12__c,MSJ_Skill_Total__c,MSJ_After_Call_01__c,MSJ_After_Call_02__c,MSJ_After_Call_03__c,MSJ_After_Call_04__c,MSJ_Closing__c,MSJ_Comment_by_MR__c,MSJ_Confirmed_by_MR__c,MSJ_Createdby__c,MSJ_FT_AM_Name__c,MSJ_Interview_Preparation__c,MSJ_Interview_Reflection__c,MSJ_Notify_To_MR__c,MSJ_Opening__c,MSJ_Others_01_Result__c,MSJ_Others_01__c,MSJ_Others_02_Result__c,MSJ_Others_02__c,MSJ_Patient_Thinking__c,MSJ_Probing__c,MSJ_Supporting__c,MSJ_Patient_Thinking_for_FE__c,MSJ_After_Call_05__c,MSJ_After_Call_06__c,MSJ_After_Call_07__c,MSJ_After_Call_08__c,MSJ_Createdby_FE__c,MSJ_Createdby_ONC__c,MSJ_Development_Level__c,MSJ_Interview_Prep_01__c,MSJ_Interview_Prep_02__c,MSJ_Leadership_Style__c,MSJ_Overcome_01__c,MSJ_Overcome_02__c,MSJ_Overcome_03__c,MSJ_Overcome_04__c,MSJ_Review_01__c,MSJ_Review_02__c,MSJ_SK_01__c,MSJ_SK_02__c,MSJ_SK_03__c,MSJ_SK_04__c,MSJ_SK_05__c,MSJ_SK_06__c,MSJ_SK_07__c,MSJ_SK_08__c,MSJ_SK_09__c,MSJ_SK_10__c,MSJ_Specific_Action__c,MSJ_Training_Point__c,MSJ_Achievement_of_This_Month__c,MSJ_Action_of_This_Month__c,MSJ_Comment_from_AM__c,MSJ_Efforts_of_Month__c,MSJ_Efforts_of_Year__c,MSJ_Skill_Task__c Id,OwnerId,IsDeleted,Name,RecordTypeId,CreatedDate,CreatedById,LastModifiedDate,LastModifiedById,SystemModstamp,MayEdit,IsLocked,LastViewedDate,LastReferencedDate,Mobile_ID_vod__c,Manager_vod__c,Employee_vod__c,Review_Date__c,Review_Period__c,Status__c,Comments__c,Strategic_Planning__c,Customer_Focus__c,Knowledge_Expertise__c,Business_Account_Planning__c,Call_Productivity__c,Overall_Rating__c,MSJ_A01__c,MSJ_A02__c,MSJ_A03__c,MSJ_AM_Memo__c,MSJ_Aid_Total__c,MSJ_C0_GC__c,MSJ_C1_GC__c,MSJ_C2_GC__c,MSJ_Countermeasure__c,MSJ_Deadline__c,MSJ_Double_Visit_Time__c,MSJ_Hospital__c,MSJ_K01_FE__c,MSJ_K01_ONC__c,MSJ_K02_FE__c,MSJ_K02_ONC__c,MSJ_K03_FE__c,MSJ_K03_ONC__c,MSJ_K04_FE__c,MSJ_K04_ONC__c,MSJ_K05_FE__c,MSJ_K05_ONC__c,MSJ_K06_FE__c,MSJ_K06_ONC__c,MSJ_K0_GC__c,MSJ_K1_GC__c,MSJ_K2_GC__c,MSJ_Knowledge_Total__c,MSJ_L0_GC__c,MSJ_L1_GC__c,MSJ_L2_GC__c,MSJ_MR_GC__c,MSJ_MR_Problems__c,MSJ_N0_GC__c,MSJ_N1_GC__c,MSJ_N2_GC__c,MSJ_Num_of_DTL__c,MSJ_P01__c,MSJ_P02__c,MSJ_P03__c,MSJ_P04__c,MSJ_P05__c,MSJ_P0_GC__c,MSJ_P1_GC__c,MSJ_P2_GC__c,MSJ_PlanningTotal__c,MSJ_R0_GC__c,MSJ_R1_GC__c,MSJ_R2_GC__c,MSJ_S01__c,MSJ_S02__c,MSJ_S03__c,MSJ_S04__c,MSJ_S05__c,MSJ_S06__c,MSJ_S07__c,MSJ_S08__c,MSJ_S09__c,MSJ_S10__c,MSJ_S11__c,MSJ_S12__c,MSJ_Skill_Total__c,MSJ_After_Call_01__c,MSJ_After_Call_02__c,MSJ_After_Call_03__c,MSJ_After_Call_04__c,MSJ_Closing__c,MSJ_Comment_by_MR__c,MSJ_Confirmed_by_MR__c,MSJ_Createdby__c,MSJ_FT_AM_Name__c,MSJ_Interview_Preparation__c,MSJ_Interview_Reflection__c,MSJ_Notify_To_MR__c,MSJ_Opening__c,MSJ_Others_01_Result__c,MSJ_Others_01__c,MSJ_Others_02_Result__c,MSJ_Others_02__c,MSJ_Patient_Thinking__c,MSJ_Probing__c,MSJ_Supporting__c,MSJ_Patient_Thinking_for_FE__c,MSJ_After_Call_05__c,MSJ_After_Call_06__c,MSJ_After_Call_07__c,MSJ_After_Call_08__c,MSJ_Createdby_FE__c,MSJ_Createdby_ONC__c,MSJ_Development_Level__c,MSJ_Interview_Prep_01__c,MSJ_Interview_Prep_02__c,MSJ_Leadership_Style__c,MSJ_Overcome_01__c,MSJ_Overcome_02__c,MSJ_Overcome_03__c,MSJ_Overcome_04__c,MSJ_Review_01__c,MSJ_Review_02__c,MSJ_SK_01__c,MSJ_SK_02__c,MSJ_SK_03__c,MSJ_SK_04__c,MSJ_SK_05__c,MSJ_SK_06__c,MSJ_SK_07__c,MSJ_SK_08__c,MSJ_SK_09__c,MSJ_SK_10__c,MSJ_Specific_Action__c,MSJ_Training_Point__c,MSJ_Achievement_of_This_Month__c,MSJ_Action_of_This_Month__c,MSJ_Comment_from_AM__c,MSJ_Efforts_of_Month__c,MSJ_Efforts_of_Year__c,MSJ_Skill_Task__c,MSJ_SK_11__c,MSJ_SK_12__c,MSJ_SK_13__c,MSJ_SK_14__c,MSJ_SK_15__c,MSJ_SK_16__c,MSJ_SK_17__c,SK_Special_Note_01__c,SK_Special_Note_09__c,MSJ_Overcome_Special_Note_01__c,SK_Special_Note_02__c,SK_Special_Note_03__c,SK_Special_Note_04__c,SK_Special_Note_05__c,SK_Special_Note_06__c,SK_Special_Note_07__c,SK_Special_Note_08__c,MSJ_Overcome_Special_Note_02__c,MSJ_Overcome_Special_Note_03__c,MSJ_Overcome_Special_Note_04__c,MSJ_Interview_Prep_Special_Note01__c,MSJ_Interview_Prep_Special_Note02__c,MSJ_After_Call_09__c,MSJ_After_Call_10__c,MSJ_After_Call_11__c,MSJ_Interview_Prep_Reject_Reason__c,After_Call_Reject_Reason__c,After_Call_Special_Note__c
src02c.crm_Coaching_Report_vod__c src02c.crm_Coaching_Report_vod__c
org02.crm_Coaching_Report_vod__c org02.crm_Coaching_Report_vod__c

View File

@ -4,9 +4,9 @@ utf-8
" "
CRLF CRLF
1 1
36 37
Id,IsDeleted,Name,RecordTypeId,CreatedDate,CreatedById,LastModifiedDate,LastModifiedById,SystemModstamp,LastActivityDate,MayEdit,IsLocked,Sent_Email_vod__c,Activity_DateTime_vod__c,City_vod__c,Click_URL_vod__c,Client_Name_vod__c,Client_OS_vod__c,Client_Type_vod__c,Country_vod__c,Device_Type_vod__c,Event_Msg_vod__c,Event_type_vod__c,IP_Address_vod__c,Region_vod__c,User_Agent_vod__c,Vault_Doc_ID_vod__c,Vault_Doc_Name_vod__c,Vault_Document_Major_Version_vod__c,Vault_Document_Minor_Version_vod__c,Vault_Document_Number_vod__c,Vault_Document_Title_vod__c,Vault_Instance_ID_vod__c,Preference_Modification_vod__c,Approved_Document_vod__c,Link_Name_vod__c Id,IsDeleted,Name,RecordTypeId,CreatedDate,CreatedById,LastModifiedDate,LastModifiedById,SystemModstamp,LastActivityDate,MayEdit,IsLocked,Sent_Email_vod__c,Activity_DateTime_vod__c,City_vod__c,Click_URL_vod__c,Client_Name_vod__c,Client_OS_vod__c,Client_Type_vod__c,Country_vod__c,Device_Type_vod__c,Event_Msg_vod__c,Event_type_vod__c,IP_Address_vod__c,Region_vod__c,User_Agent_vod__c,Vault_Doc_ID_vod__c,Vault_Doc_Name_vod__c,Vault_Document_Major_Version_vod__c,Vault_Document_Minor_Version_vod__c,Vault_Document_Number_vod__c,Vault_Document_Title_vod__c,Vault_Instance_ID_vod__c,Preference_Modification_vod__c,Approved_Document_vod__c,Link_Name_vod__c,Bot_vod__c
Id,IsDeleted,Name,RecordTypeId,CreatedDate,CreatedById,LastModifiedDate,LastModifiedById,SystemModstamp,LastActivityDate,MayEdit,IsLocked,Sent_Email_vod__c,Activity_DateTime_vod__c,City_vod__c,Click_URL_vod__c,Client_Name_vod__c,Client_OS_vod__c,Client_Type_vod__c,Country_vod__c,Device_Type_vod__c,Event_Msg_vod__c,Event_type_vod__c,IP_Address_vod__c,Region_vod__c,User_Agent_vod__c,Vault_Doc_ID_vod__c,Vault_Doc_Name_vod__c,Vault_Document_Major_Version_vod__c,Vault_Document_Minor_Version_vod__c,Vault_Document_Number_vod__c,Vault_Document_Title_vod__c,Vault_Instance_ID_vod__c,Preference_Modification_vod__c,Approved_Document_vod__c,Link_Name_vod__c Id,IsDeleted,Name,RecordTypeId,CreatedDate,CreatedById,LastModifiedDate,LastModifiedById,SystemModstamp,LastActivityDate,MayEdit,IsLocked,Sent_Email_vod__c,Activity_DateTime_vod__c,City_vod__c,Click_URL_vod__c,Client_Name_vod__c,Client_OS_vod__c,Client_Type_vod__c,Country_vod__c,Device_Type_vod__c,Event_Msg_vod__c,Event_type_vod__c,IP_Address_vod__c,Region_vod__c,User_Agent_vod__c,Vault_Doc_ID_vod__c,Vault_Doc_Name_vod__c,Vault_Document_Major_Version_vod__c,Vault_Document_Minor_Version_vod__c,Vault_Document_Number_vod__c,Vault_Document_Title_vod__c,Vault_Instance_ID_vod__c,Preference_Modification_vod__c,Approved_Document_vod__c,Link_Name_vod__c,Bot_vod__c
src02c.crm_Email_Activity_vod__c src02c.crm_Email_Activity_vod__c
org02.crm_Email_Activity_vod__c org02.crm_Email_Activity_vod__c

View File

@ -4,9 +4,9 @@ utf-8
" "
CRLF CRLF
1 1
36 37
Id,IsDeleted,Name,RecordTypeId,CreatedDate,CreatedById,LastModifiedDate,LastModifiedById,SystemModstamp,MayEdit,IsLocked,Attendee_vod__c,User_vod__c,Medical_Event_vod__c,Attendee_Type_vod__c,Status_vod__c,Contact_vod__c,Attendee_Name_vod__c,Account_vod__c,Start_Date_vod__c,Signature_vod__c,Signature_Datetime_vod__c,MSJ_Copy_Account_Type__c,MSJ_Evaluation__c,MSJ_Hospital__c,MSJ_Role__c,Mobile_ID_vod__c,MSJ_Evaluation_Comment__c,Position_vod__c,Talk_Title_vod__c,MSJ_Attendee_Reaction__c,MSJ_Registration__c,MSJ_DirectMail_Status__c,EM_Event_Team_Member_vod__c,Group_Name_vod__c,Role_vod__c Id,IsDeleted,Name,RecordTypeId,CreatedDate,CreatedById,LastModifiedDate,LastModifiedById,SystemModstamp,MayEdit,IsLocked,Attendee_vod__c,User_vod__c,Medical_Event_vod__c,Attendee_Type_vod__c,Status_vod__c,Contact_vod__c,Attendee_Name_vod__c,Account_vod__c,Start_Date_vod__c,Signature_vod__c,Signature_Datetime_vod__c,MSJ_Copy_Account_Type__c,MSJ_Evaluation__c,MSJ_Hospital__c,MSJ_Role__c,Mobile_ID_vod__c,MSJ_Evaluation_Comment__c,Position_vod__c,Talk_Title_vod__c,MSJ_Attendee_Reaction__c,MSJ_Registration__c,MSJ_DirectMail_Status__c,EM_Event_Team_Member_vod__c,Group_Name_vod__c,Role_vod__c,MSJ_Attendee_Media__c
Id,IsDeleted,Name,RecordTypeId,CreatedDate,CreatedById,LastModifiedDate,LastModifiedById,SystemModstamp,MayEdit,IsLocked,Attendee_vod__c,User_vod__c,Medical_Event_vod__c,Attendee_Type_vod__c,Status_vod__c,Contact_vod__c,Attendee_Name_vod__c,Account_vod__c,Start_Date_vod__c,Signature_vod__c,Signature_Datetime_vod__c,MSJ_Copy_Account_Type__c,MSJ_Evaluation__c,MSJ_Hospital__c,MSJ_Role__c,Mobile_ID_vod__c,MSJ_Evaluation_Comment__c,Position_vod__c,Talk_Title_vod__c,MSJ_Attendee_Reaction__c,MSJ_Registration__c,MSJ_DirectMail_Status__c,EM_Event_Team_Member_vod__c,Group_Name_vod__c,Role_vod__c Id,IsDeleted,Name,RecordTypeId,CreatedDate,CreatedById,LastModifiedDate,LastModifiedById,SystemModstamp,MayEdit,IsLocked,Attendee_vod__c,User_vod__c,Medical_Event_vod__c,Attendee_Type_vod__c,Status_vod__c,Contact_vod__c,Attendee_Name_vod__c,Account_vod__c,Start_Date_vod__c,Signature_vod__c,Signature_Datetime_vod__c,MSJ_Copy_Account_Type__c,MSJ_Evaluation__c,MSJ_Hospital__c,MSJ_Role__c,Mobile_ID_vod__c,MSJ_Evaluation_Comment__c,Position_vod__c,Talk_Title_vod__c,MSJ_Attendee_Reaction__c,MSJ_Registration__c,MSJ_DirectMail_Status__c,EM_Event_Team_Member_vod__c,Group_Name_vod__c,Role_vod__c,MSJ_Attendee_Media__c
src02c.crm_Event_Attendee_vod__c src02c.crm_Event_Attendee_vod__c
org02.crm_Event_Attendee_vod__c org02.crm_Event_Attendee_vod__c

View File

@ -4,9 +4,9 @@ utf-8
" "
CRLF CRLF
1 1
51 52
Id,OwnerId,IsDeleted,Name,RecordTypeId,CreatedDate,CreatedById,LastModifiedDate,LastModifiedById,SystemModstamp,MayEdit,IsLocked,LastViewedDate,LastReferencedDate,Description_vod__c,Product_vod__c,Product_Strategy_vod__c,Display_Order_vod__c,Active_vod__c,Category_vod__c,Vehicle_vod__c,CLM_ID_vod__c,Custom_Reaction_vod__c,Slide_Version_vod__c,Language_vod__c,Media_File_CRC_vod__c,Media_File_Name_vod__c,Media_File_Size_vod__c,Segment_vod__c,Disable_Actions_vod__c,VExternal_Id_vod__c,CDN_Path_vod__c,Status_vod__c,Vault_DNS_vod__c,Vault_Doc_Id_vod__c,Vault_External_Id_vod__c,Vault_GUID_vod__c,Vault_Last_Modified_Date_Time_vod__c,Is_Shared_Resource_vod__c,iOS_Viewer_vod__c,iOS_Resolution_vod__c,approved_for_distribution_date__c,approved_for_use_date__c,business_function__c,ewizard_link__c,expiration_date__c,keywords__c,trade_team__c,MSJ_Start_Date__c,MSJ_End_Date__c,MSJ_Strategic_Message__c Id,OwnerId,IsDeleted,Name,RecordTypeId,CreatedDate,CreatedById,LastModifiedDate,LastModifiedById,SystemModstamp,MayEdit,IsLocked,LastViewedDate,LastReferencedDate,Description_vod__c,Product_vod__c,Product_Strategy_vod__c,Display_Order_vod__c,Active_vod__c,Category_vod__c,Vehicle_vod__c,CLM_ID_vod__c,Custom_Reaction_vod__c,Slide_Version_vod__c,Language_vod__c,Media_File_CRC_vod__c,Media_File_Name_vod__c,Media_File_Size_vod__c,Segment_vod__c,Disable_Actions_vod__c,VExternal_Id_vod__c,CDN_Path_vod__c,Status_vod__c,Vault_DNS_vod__c,Vault_Doc_Id_vod__c,Vault_External_Id_vod__c,Vault_GUID_vod__c,Vault_Last_Modified_Date_Time_vod__c,Is_Shared_Resource_vod__c,iOS_Viewer_vod__c,iOS_Resolution_vod__c,approved_for_distribution_date__c,approved_for_use_date__c,business_function__c,ewizard_link__c,expiration_date__c,keywords__c,trade_team__c,MSJ_Start_Date__c,MSJ_End_Date__c,MSJ_Strategic_Message__c,Media_Type_vod__c
Id,OwnerId,IsDeleted,Name,RecordTypeId,CreatedDate,CreatedById,LastModifiedDate,LastModifiedById,SystemModstamp,MayEdit,IsLocked,LastViewedDate,LastReferencedDate,Description_vod__c,Product_vod__c,Product_Strategy_vod__c,Display_Order_vod__c,Active_vod__c,Category_vod__c,Vehicle_vod__c,CLM_ID_vod__c,Custom_Reaction_vod__c,Slide_Version_vod__c,Language_vod__c,Media_File_CRC_vod__c,Media_File_Name_vod__c,Media_File_Size_vod__c,Segment_vod__c,Disable_Actions_vod__c,VExternal_Id_vod__c,CDN_Path_vod__c,Status_vod__c,Vault_DNS_vod__c,Vault_Doc_Id_vod__c,Vault_External_Id_vod__c,Vault_GUID_vod__c,Vault_Last_Modified_Date_Time_vod__c,Is_Shared_Resource_vod__c,iOS_Viewer_vod__c,iOS_Resolution_vod__c,approved_for_distribution_date__c,approved_for_use_date__c,business_function__c,ewizard_link__c,expiration_date__c,keywords__c,trade_team__c,MSJ_Start_Date__c,MSJ_End_Date__c,MSJ_Strategic_Message__c Id,OwnerId,IsDeleted,Name,RecordTypeId,CreatedDate,CreatedById,LastModifiedDate,LastModifiedById,SystemModstamp,MayEdit,IsLocked,LastViewedDate,LastReferencedDate,Description_vod__c,Product_vod__c,Product_Strategy_vod__c,Display_Order_vod__c,Active_vod__c,Category_vod__c,Vehicle_vod__c,CLM_ID_vod__c,Custom_Reaction_vod__c,Slide_Version_vod__c,Language_vod__c,Media_File_CRC_vod__c,Media_File_Name_vod__c,Media_File_Size_vod__c,Segment_vod__c,Disable_Actions_vod__c,VExternal_Id_vod__c,CDN_Path_vod__c,Status_vod__c,Vault_DNS_vod__c,Vault_Doc_Id_vod__c,Vault_External_Id_vod__c,Vault_GUID_vod__c,Vault_Last_Modified_Date_Time_vod__c,Is_Shared_Resource_vod__c,iOS_Viewer_vod__c,iOS_Resolution_vod__c,approved_for_distribution_date__c,approved_for_use_date__c,business_function__c,ewizard_link__c,expiration_date__c,keywords__c,trade_team__c,MSJ_Start_Date__c,MSJ_End_Date__c,MSJ_Strategic_Message__c,Media_Type_vod__c
src02.crm_Key_Message_vod__c src02.crm_Key_Message_vod__c
org02.crm_Key_Message_vod__c org02.crm_Key_Message_vod__c

View File

@ -0,0 +1,13 @@
CRM
,
utf-8
"
CRLF
1
26
Id,IsDeleted,Name,RecordTypeId,CreatedDate,CreatedById,LastModifiedDate,LastModifiedById,SystemModstamp,MayEdit,IsLocked,LastViewedDate,LastReferencedDate,MSJ_Related_External_Account_Data__c,MSJ_Active__c,MSJ_Terms_Conditions_Details__c,MSJ_Terms_Conditions__c,MSJ_Channel_Value__c,MSJ_Consent_Channel__c,MSJ_Consent_Details__c,MSJ_Consent_Status__c,MSJ_Consent__c,MSJ_Therapeutic_Area_TA__c,MSJ_Email_Unmatch__c,MSJ_WebApp_ClientId__c,MSJ_WebApp_ClientName__c
Id,IsDeleted,Name,RecordTypeId,CreatedDate,CreatedById,LastModifiedDate,LastModifiedById,SystemModstamp,MayEdit,IsLocked,LastViewedDate,LastReferencedDate,MSJ_Related_External_Account_Data__c,MSJ_Active__c,MSJ_Terms_Conditions_Details__c,MSJ_Terms_Conditions__c,MSJ_Channel_Value__c,MSJ_Consent_Channel__c,MSJ_Consent_Details__c,MSJ_Consent_Status__c,MSJ_Consent__c,MSJ_Therapeutic_Area_TA__c,MSJ_Email_Unmatch__c,MSJ_WebApp_ClientId__c,MSJ_WebApp_ClientName__c
src02.crm_MSJ_Related_External_Account_Data_Attrib__c
org02.crm_MSJ_Related_External_Account_Data_Attrib__c

Some files were not shown because too many files have changed in this diff Show More