alibabacloud-oss-manage-cron-upload について
`aliyun` CLI と OS のスケジューラーを使い、ローカルフォルダーから Alibaba Cloud OSS へ定期アップロードするスキルです。パラメーター検証、バケット確認、アップロード、スケジュール設定を扱います。
主な機能
- 01ローカルフォルダーを OSS へ定期アップロード
- 02統合された `aliyun ossutil` コマンドを利用
- 03バケット、パス、スケジュール入力を検証
- 04cron または Windows Task Scheduler を設定
- 05バケットとアップロード済みオブジェクトを確認
活用シーン
- 01ローカルフォルダーを OSS に定期バックアップ
- 02アップロード設定前に OSS バケットを確認
- 03Linux、macOS、Windows で定期アップロードを設定
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ aliyun/ alibabacloud-aiops-skills --skill alibabacloud-oss-manage-cron-uploadインストール後、Claude Code で/alibabacloud-oss-manage-cron-uploadを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/acceptance-criteria.mdcli-installation-guide.mdram-policies.mdrelated-apis.mdverification-method.md詳細
OSS 定期ローカル同期
aliyun CLI を優先するワークフローで、ローカルフォルダーから OSS への定期アップロードを計画し、検証します。
シナリオの説明
このスキルでは、時間の経過とともに内容が変化するローカルフォルダーを、定期的なスケジュールで OSS にアップロードするケースを扱います。
アーキテクチャ: ローカルフォルダー + aliyun CLI(統合された ossutil)+ cron/Task Scheduler + OSS バケット
機能の分担:
[aliyun CLI]インストールの確認、プロファイルの検証、コマンドの検索、OSS 側の検証、統合されたaliyun ossutilのアップロード/一覧表示コマンド。[OS-local]cron または Windows Task Scheduler の設定。[Manual/Console]RAM ポリシーの割り当てと、OSS Console での任意の目視確認。
インストール
事前確認:Aliyun CLI >= 3.3.3 が必要です
aliyun versionを実行して、バージョンが>= 3.3.3であることを確認してください。未インストールの場合、またはバージョンが古い場合は、 インストール手順についてreferences/cli-installation-guide.mdを参照してください。 続いて、aliyun configure set --auto-plugin-install trueを実行してください。 Core Workflow の開始時(CLI を呼び出す前)に実行してください。 [必須] AI-Mode を有効にする — Agent Skill の実行には AI-mode が必要です。 CLI を呼び出す前に、以下のコマンドを実行してください。aliyun configure ai-mode enable aliyun configure ai-mode set-user-agent --user-agent "AlibabaCloud-Agent-Skills/alibabacloud-oss-manage-cron-upload"[必須] すべての終了時に AI-Mode を無効にする — どのような理由であっても、最終応答を返す前に必ず最初に AI-mode を無効にしてください。これはワークフローの成功、ワークフローの失敗、エラー/例外、ユーザーによるキャンセル、セッションの終了、その他 CLI コマンドをこれ以上実行しないあらゆる状況など、すべての終了パスに適用されます。 AI-mode は Agent Skill の呼び出しシナリオでのみ使用するものであり、スキルの実行終了後も有効なままにしてはなりません。
aliyun configure ai-mode disable
[必須] CLI User-Agent —
aliyunCLI コマンドを呼び出すたびに、次の値を指定する必要があります。--user-agent AlibabaCloud-Agent-Skills/alibabacloud-oss-manage-cron-upload
必要なローカルツール:
| ツール | 必須 | 用途 | 確認方法 |
|---|---|---|---|
aliyun CLI | はい | 認証情報の確認、コマンドの検索、統合された ossutil によるアップロード/一覧表示 | aliyun version および aliyun ossutil --help |
cron または schtasks | はい | ローカルでの定期実行 | crontab -l または schtasks /Query /TN "OSS Scheduled Sync" |
CLI のインストールとプラグインの設定には、references/cli-installation-guide.md のみを使用してください。このスキルでは、統合された aliyun ossutil コマンドを使用してください。スタンドアロンの ossutil のインストールや、単独の ossutil コマンドは必要ありません。
環境変数
すでに設定済みの Alibaba Cloud プロファイル以外に、クラウド固有の環境変数は必要ありません。
サンプルで使用する任意のローカル変数:
| 変数 | 必須/任意 | 説明 | デフォルト値 |
|---|---|---|---|
ALIBABA_CLOUD_PROFILE | 任意 | 事前設定済みの Alibaba Cloud CLI プロファイルを選択します | CLI の現在のプロファイル |
ALIYUN_BIN | 任意 | PATH に aliyun がない場合に、その絶対パスを指定します | aliyun |
OSS_SYNC_LOG | 任意 | 定期実行のログファイルパス | OS 固有のローカルパス |
パラメーターの確認
パラメーターの抽出 — ユーザーのリクエストから、ユーザーがカスタマイズできるパラメーターをすべて直接抽出してください。 ユーザーのメッセージですでに値(リージョン、バケット名、パス、スケジュール、MaxAge など)が指定されている場合は、再確認を求めず、それらの値を直接使用してください。 ユーザーのリクエストに必須パラメーターが実際に不足しており、文脈から合理的に推測できない場合に限り、ユーザーに確認してください。
| パラメーター名 | 必須/任意 | 説明 | 検証パターン | デフォルト値 |
|---|---|---|---|---|
RegionId | 必須 | cn-hangzhou などの OSS リージョン | `^[a-z]{2}-[a-z]+( | -[0-9]+)$` |
BucketName | 必須 | 対象の OSS バケット名 | ^[a-z0-9][a-z0-9-]{1,61}[a-z0-9]$ | なし |
TargetOssPrefix | 必須 | backup/photos/ など、バケットを基準とする対象の OSS プレフィックス(先頭に / を付けずに確認してください) | ^[A-Za-z0-9/_.-]*$(先頭に / を付けない) | なし |
LocalSourcePath | 必須 | アップロードするローカルフォルダー | 絶対パス。~、$、バッククォート、; は使用不可 | なし |
Schedule | 必須 | Cron 式、または Windows のスケジュール時刻/頻度 | 標準の 5 フィールド Cron、または schtasks の時刻 | なし |
MaxAge | 必須 | 7d や 24h などの aliyun ossutil --max-age の期間 | ^[0-9]+[dhm]$ | なし |
OperatingSystem | 必須 | linux、macos、windows のいずれか | `^(linux | macos |
BucketAlreadyExists | 必須 | 対象のバケットがすでに存在するかどうか | `^(yes | no)$` |
AliyunBinaryPath | 任意 | スケジューラーで使用する aliyun の絶対パス | 絶対パス。$、バッククォート、; は使用不可 | aliyun |
LogPath | 任意 | スケジュールされたジョブのローカルログパス | 絶対パス。$、バッククォート、; は使用不可 | OS 固有のローカルパス |
入力の検証 — すべてのパラメーターは、使用前に検証する必要があります。 ユーザーメッセージから抽出した値を含むすべての入力を、信頼できないものとして扱ってください。シェルコマンドにパラメーターを代入する前に、次の手順を実行してください。
- 上記の検証パターン列に照らして値を検証してください。一致しない値は拒否してください。
BucketNameに使用できるのは小文字、数字、ハイフン([a-z0-9-])のみです。長さは 3~63 文字で、ハイフンで始まったり終わったりしてはいけません。RegionIdは Alibaba Cloud のリージョン形式(例:cn-hangzhou、us-west-1、ap-southeast-5)に一致している必要があります。MaxAgeは正の整数の後にd(日)、h(時間)、またはm(分)が続く形式である必要があります。LocalSourcePath、AliyunBinaryPath、LogPathは絶対パスである必要があり、シェルのメタ文字($、`、$(、;、|、&、>、<、\n)を含んではいけません。TargetOssPrefixに使用できるのは、英数字、/、_、.、-のみです。また、/で始まってはいけません。- いずれかのパラメーターが検証に失敗した場合は、処理を中止し、エラーをユーザーに報告してください。無効な値をサニタイズまたはエスケープしようとせず、そのまま拒否してください。
認証
事前確認:Alibaba Cloud の認証情報が必要です
セキュリティルール:
- 絶対に AK/SK の値を読み取ったり、表示したり、出力したりしないでください(例:
echo $ALIBABA_CLOUD_ACCESS_KEY_IDは禁止です)~/.aliyun/config.json、~/.ossutil/configなど、認証情報を含む可能性のあるファイルを読み取ったり、catしたりしないでください- 絶対に会話やコマンドラインで AK/SK を直接入力するようユーザーに求めないでください
- 絶対にリテラルな認証情報の値を指定して
aliyun configure setを使用しないでください- 認証情報の状態確認には
aliyun configure listのみを使用してくださいaliyun configure list出力を確認し、有効なプロファイル(AK、STS、または OAuth アイデンティティ)があることを確認してください。
有効なプロファイルがない場合は、ここで停止してください。
- Alibaba Cloud Console から認証情報を取得します
- このセッション外で認証情報を設定します(ターミナルで
aliyun configureを実行するか、シェルプロファイルで環境変数を設定します)aliyun configure listに有効なプロファイルが表示されたら戻り、再実行します
すべての aliyun ossutil コマンドでは、アクティブな CLI プロファイルを再利用してください。シークレットを出力したり、ハードコードしたりしないでください。このゲートを ossutil config やその他のシークレット入力方法に置き換えないでください。
RAM ポリシー
デフォルトのワークフローでは、バケットの検出、バケットメタデータの検証、確認済みプレフィックスへのオブジェクトのアップロードに必要な最小権限が必要です。
| スコープ | 必要なアクション |
|---|---|
| アカウントレベルの検証 | oss:ListBuckets |
| 対象バケットの検証 | oss:GetBucketInfo |
| 対象プレフィックスへの増分アップロード | oss:PutObject、oss:GetObject、oss:ListObjects |
| オプションのテスト後のクリーンアップ | oss:DeleteObject |
ポリシー JSON とプレフィックスをスコープとするリソースの例については、references/ram-policies.md を使用してください。
デフォルトの最小権限セットを oss:AbortMultipartUpload を中心に再定義しないでください。このスキルのデフォルトの最小権限パスは、バケットの検出、バケットメタデータの検証、プレフィックスをスコープとするアップロード/一覧表示/読み取りアクションを基本とします。マルチパートクリーンアップ権限は、ユーザーが明示的に求めた場合に限り、追加対応として扱います。
コアワークフロー
ドキュメントに記載するだけでなく、実行してください。 各ステップのコマンドを環境内で直接実行してください。解決策のドキュメントやスクリプトを書くだけではなく、ライブ環境に対して
aliyun version、aliyun configure list、aliyun ossutil cpなどを実際に実行してください。ユーザーのリクエストから
RegionId、BucketName、TargetOssPrefix、LocalSourcePath、Schedule、MaxAge、OperatingSystem、BucketAlreadyExistsを抽出してください。必須パラメーターが本当に不足している場合に限り、ユーザーに確認してください。
ステップ 1:CLI と認証情報の確認 [aliyun CLI]
aliyun version
aliyun configure list
aliyun configure ai-mode enable
次を確認してください。
aliyunのバージョンが>= 3.3.3である- 有効なプロファイルが 1 つ以上存在する
- AI セーフティモードが有効になっている(危険な操作はブロックされます)
バージョンが古すぎる場合、または aliyun が見つからない場合は、references/cli-installation-guide.md を参照してください。CLI が見つからないときに、単体の ossutil または aliyun ossutil sync に切り替えて回避しないでください。
ステップ 2:バケットの前提条件を確認または作成する [aliyun CLI]
候補バケットの一覧を必ず最初に確認してください。
aliyun ossutil api list-buckets --output-format json \
--read-timeout 60 --connect-timeout 30 \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-oss-manage-cron-upload
BucketAlreadyExists=yes の場合は、選択したバケットを明示的に確認してください。
aliyun ossutil stat "oss://${BucketName}" --region "${RegionId}" --output-format json \
--read-timeout 60 --connect-timeout 30 \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-oss-manage-cron-upload
リージョンをまたぐ場合の注意:アクティブな CLI プロファイルのリージョン(
aliyun configure listで表示)と対象バケットのRegionIdが異なる場合は、stat、ls、cpコマンドに--region "${RegionId}"を追加する必要があります。--endpointだけでは不十分です。リクエストの署名リージョンも一致させる必要があるためです。--regionフラグを使うと、エンドポイントと署名リージョンを一度に指定できます。
確認する項目:
- アカウントの一覧にバケット名が存在すること
- バケットのリージョンが
RegionIdと一致すること - アクティブなプロファイルでバケットにアクセスできること
- 同じバックアップ先として利用できる既存バケットが複数ある場合は、バックアップの安全性を高めるため、バージョニングが有効なバケットが望ましいとユーザーに伝えてもかまいません。ただし、これは推奨事項にすぎず、確認済みの既存バケットの利用を妨げるものではありません
BucketAlreadyExists=no の場合は、冪等性を保つ「確認してから実行する」パターンを使用してください。
- まず
list-buckets(上記)を実行し、アカウントにバケットが本当に存在しないことを確認します。すでに存在する場合は、作成を省略し、statによる確認に進みます。 - バケットが存在しないことを確認できた場合に限り、このスキルに記載されている既存の作成フローに従って作成します。
- 作成後、すぐに
statを再実行して確認します。
aliyun ossutil stat "oss://${BucketName}" --region "${RegionId}" --output-format json \
--read-timeout 60 --connect-timeout 30 \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-oss-manage-cron-upload
バックアップを定期的に行う場合の任意の推奨事項:
- 候補バケットが複数あり、そのうちの 1 つでバージョニングがすでに有効になっている場合は、バックアップをロールバックする際の安全性を高めるため、そのバケットが望ましいと伝えてください。
- 確認済みの既存バケットでバージョニングが有効になっていなくても、このワークフローで引き続き利用できます。バージョニングの有効化は任意の強化策であり、前提条件ではありません。
アップロードや確認に使う cp、ls、stat などのコマンドでは、aliyun ossutil を標準として使用してください。バケットの作成では、ここで新しいコマンド群を考案するのではなく、このスキルにすでに記載されている既存の作成フローに従ってください。前提条件の不足を補うために、成功したと偽ったり、追加のデプロイファイルや架空のローカル成果物を捏造したりしないでください。
ステップ 3:正式な増分アップロードテストを実行する [aliyun CLI / integrated ossutil]
実際のスケジュール済みアップロードジョブには、公式のデータプレーンコマンドファミリーである aliyun ossutil を使用します。
aliyun ossutil cp "${LocalSourcePath}" "oss://${BucketName}/${TargetOssPrefix}" \
-r -u \
--max-age "${MaxAge}" \
--region "${RegionId}" \
--read-timeout 300 --connect-timeout 30 \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-oss-manage-cron-upload
このコマンドの主なルール:
-uは必須です。ターゲットオブジェクトが存在しない場合、またはソースファイルが既存の OSS オブジェクトより新しい場合にのみアップロードします-r -u --max-ageは正式なフラグセットとして、常に一緒に指定してください--region "${RegionId}"により、エンドポイントと署名リージョンの両方が正しく設定されます--read-timeout 300 --connect-timeout 30により、コマンドが無期限にハングするのを防ぎます。非常に大きなファイルでは、必要に応じて--read-timeoutを大きくしてください-fは、無人実行(cron、Task Scheduler、CI)の場合にのみ追加してくださいLocalSourcePathには絶対パスを使用してください(~は使用しないでください)TargetOssPrefixは先頭の/を付けずに正規化してください- 単独の
ossutil、aliyun ossutil sync、またはCache-Controlメタデータの書き換えで代用しないでください
TargetOssPrefix が空の場合は、末尾にスラッシュを付けて oss://${BucketName}/ を使用します。それ以外の場合は、プレフィックスを正規化した後に oss://${BucketName}/${TargetOssPrefix} を使用します。
現在の環境(コンテナや CI ランナーなど)に
LocalSourcePathが存在しない場合は、現在の作業ディレクトリ内に小さなテストファイルを作成し、そのパスに対してアップロードコマンドを実行した後、aliyun ossutil lsで確認してください。これにより、アップロード経路がエンドツーエンドで機能することを検証できます。ディレクトリが存在しないという理由でアップロードテストを省略しないでください。ディレクトリを作成し、接続性、権限、コマンドの正しさを検証してください。mkdir -p "${LocalSourcePath}" && echo "test" > "${LocalSourcePath}/test.txt" aliyun ossutil cp "${LocalSourcePath}" "oss://${BucketName}/${TargetOssPrefix}" \ -r -u --max-age "${MaxAge}" --region "${RegionId}" \ --read-timeout 300 --connect-timeout 30 \ --user-agent AlibabaCloud-Agent-Skills/alibabacloud-oss-manage-cron-upload aliyun ossutil ls "oss://${BucketName}/${TargetOssPrefix}" --region "${RegionId}" \ --read-timeout 60 --connect-timeout 30 \ --user-agent AlibabaCloud-Agent-Skills/alibabacloud-oss-manage-cron-upload
ステップ 4:アップロードをローカルスクリプトで実行する [aliyun CLI + OS-local]
最小限のスクリプトテンプレート:
#!/usr/bin/env bash
set -euo pipefail
ALIYUN_BIN="${ALIYUN_BIN:-aliyun}"
LOCAL_SOURCE_PATH="${LocalSourcePath}" # MUST be an absolute path, never use ~
BUCKET_NAME="${BucketName}"
TARGET_OSS_PREFIX="${TargetOssPrefix#/}"
MAX_AGE="${MaxAge}"
REGION_ID="${RegionId}"
LOG_FILE="${OSS_SYNC_LOG:-$HOME/oss-sync.log}"
READ_TIMEOUT="${READ_TIMEOUT:-600}"
CONNECT_TIMEOUT="${CONNECT_TIMEOUT:-30}"
# --- Input validation ---
[[ "${BUCKET_NAME}" =~ ^[a-z0-9][a-z0-9-]{1,61}[a-z0-9]$ ]] || { echo "ERROR: Invalid BucketName: ${BUCKET_NAME}" >&2; exit 1; }
[[ "${REGION_ID}" =~ ^[a-z]{2}-[a-z]+(|-[0-9]+)$ ]] || { echo "ERROR: Invalid RegionId: ${REGION_ID}" >&2; exit 1; }
[[ "${MAX_AGE}" =~ ^[0-9]+[dhm]$ ]] || { echo "ERROR: Invalid MaxAge: ${MAX_AGE}" >&2; exit 1; }
[[ "${TARGET_OSS_PREFIX}" =~ ^[A-Za-z0-9/_.-]*$ ]] || { echo "ERROR: Invalid TargetOssPrefix: ${TARGET_OSS_PREFIX}" >&2; exit 1; }
[[ "${LOCAL_SOURCE_PATH}" == /* ]] || { echo "ERROR: LocalSourcePath must be absolute: ${LOCAL_SOURCE_PATH}" >&2; exit 1; }
TARGET_URI="oss://${BUCKET_NAME}/"
if [ -n "${TARGET_OSS_PREFIX}" ]; then
TARGET_URI="oss://${BUCKET_NAME}/${TARGET_OSS_PREFIX}"
fi
"${ALIYUN_BIN}" ossutil cp "${LOCAL_SOURCE_PATH}" "${TARGET_URI}" \
-r -u -f \
--max-age "${MAX_AGE}" \
--region "${REGION_ID}" \
--read-timeout "${READ_TIMEOUT}" --connect-timeout "${CONNECT_TIMEOUT}" \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-oss-manage-cron-upload >> "${LOG_FILE}" 2>&1
注:スクリプトテンプレートには
-fフラグが含まれています。これは、対話型プロンプトによってジョブがブロックされないよう、無人での cron/Task Scheduler 実行を想定しているためです。--endpointよりも--regionフラグが推奨されます。エンドポイントと署名リージョンの両方を正しく設定できるため、CLI プロファイルのデフォルトリージョンがターゲットバケットのリージョンと異なる場合に必要です。
ステップ 5:スケジューラーを設定する [OS-local]
Linux/macOS の cron:
このスキルの Linux/macOS 向けデフォルトでは、ドキュメントに記載するスケジューラーとして cron/crontab を使用してください。ユーザーが launchd 固有の方法を明示的に求めない限り、回答を黙って launchd に切り替えないでください。
crontabが見つからない場合:コンテナや最小構成の環境では、crontabがインストールされていないことがあります。最初にcronieパッケージをインストールしてください。
- CentOS/Alibaba Cloud Linux/RHEL:
yum install -y cronie- Debian/Ubuntu:
apt-get install -y cron
systemctl start crondが失敗する場合(コンテナに systemd がない場合など)でも、crontabを使って cron エントリを追加できます。cron デーモンはエントリの登録には必須ではなく、実際の実行にのみ必要です。そのような場合は、本番ホストでユーザーが設定する cron エントリを記載し、デーモンがないことを理由にワークフローの残りを妨げないでください。
crontab -e
エントリの例(非対話型でインストールする場合は echo ... | crontab - を使用してください):
0 3 * * * /usr/local/bin/oss-sync-upload.sh >> /var/log/oss-sync-cron.log 2>&1
Windows Task Scheduler(ローカル CLI 経由):
schtasks /Create /SC DAILY /ST 03:00 /TN "OSS Scheduled Sync" /TR "C:\tools\oss-sync-upload.bat"
このステップが OS ローカルの操作であることを明確に示してください。Alibaba Cloud API の操作ではありません。スケジューラーの出力は最小限で、すぐに実行できる内容にしてください。ユーザーから明示的に求められない限り、このステップを追加の README ファイル、XML エクスポート、PowerShell ラッパー、デモ用ペイロードなどの補助成果物にまで広げないでください。
ステップ 6:アップロード先を確認する [aliyun CLI / integrated ossutil]
アップロード後(ステップ 3 のテストアップロードを含む)は、必ずこの確認を実行してください。
aliyun ossutil ls "oss://${BucketName}/${TargetOssPrefix}" --region "${RegionId}" \
--read-timeout 60 --connect-timeout 30 \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-oss-manage-cron-upload
想定されるオブジェクトが対象プレフィックス配下にあることを確認してください。このステップを省略しないでください。エンドツーエンドの接続と権限を確認するために必要です。
ユーザーが目視で手動確認したい場合は、[Manual/Console] と明記し、OSS コンソールで対象プレフィックスを確認してください。
ステップ 7:機能の境界を明確に伝える
該当する場合は、以下の制限事項を必ず伝えてください。
- 実際の増分同期ステップは
aliyun ossutilを通じて実行します。 このスキルはaliyunCLI の範囲内で動作し、独立したossutilのインストールは必要ありません。 - スケジューラーの設定は OS ごとに行います。 Cron とタスクスケジューラはホスト OS 上で設定するもので、Alibaba Cloud API を通じて設定するものではありません。
- RAM ポリシーのアタッチは通常、手動で行うか、ユーザーが既に使用している IAM ワークフローに従います。
- 対象バケットが存在しない場合は、スケジュールされたアップロードの前にバケットを作成してください。 この前提条件については、このスキルの既存の作成フローに従ってください。
- 同等の既存バケットが複数ある場合は、バックアップの安全性を高めるため、バージョニングが有効なバケットを優先するようユーザーに伝えて構いません。 バージョニングされたバケットがない場合は、ワークフローを中断せず、確認済みの既存バケットを使用してください。
- OSS コンソールでの任意の確認は手動で行います。
- 成功したように装わないでください。 前提条件が満たされていない場合は、偽のローカルテストデータ、実行ログを装ったもの、追加のパッケージ成果物を作成せず、その旨を明確に伝えてください。
成功の確認方法
正式なチェックリストとして references/verification-method.md を使用してください。
最低限、以下の条件を満たす必要があります。
aliyun configure listに有効なプロファイルが表示される。aliyun ossutil cp --helpが成功する。- 正規の
aliyun ossutil cp ... -r -u --max-age ... --region ...コマンドが、権限エラーやエンドポイントエラーなしで完了する。 aliyun ossutil ls ... --region ...に、確認済みのプレフィックス配下にある想定のアップロード済みオブジェクトが表示される。- アップロードコマンドに
-uが指定されている。これにより、対象オブジェクトが存在しない場合、またはローカルのソースファイルが既存の OSS オブジェクトより新しい場合にのみアップロードされます。 - ローカルのスケジューラーエントリが
crontab -lまたはタスクスケジューラーの履歴/クエリで確認できる。現在の環境で crontab を利用できない場合は、ユーザー向けに記録されている。
クリーンアップ
このスキルは定期的な同期を目的としているため、クリーンアップは任意ですが、テスト成果物やスケジューラーエントリは安全に削除できます。
Linux/macOS の cron [OS-local]:
crontab -eで cron の行を削除します- ユーザーがロールバックを明示的に希望した場合に限り、ローカルのスクリプトとログファイルを削除します
Windows タスクスケジューラ [OS-local]:
schtasks /Delete /TN "OSS Scheduled Sync" /F
任意の OSS テストのクリーンアップ [aliyun CLI / integrated ossutil]:
aliyun ossutil rm "oss://${BucketName}/${TargetOssPrefix}test-object.txt" --region "${RegionId}" \
--read-timeout 60 --connect-timeout 30 \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-oss-manage-cron-upload
ユーザーがその範囲のクリーンアップを明示的に希望しない限り、バケットや本番オブジェクトを削除しないでください。
AI セーフティモードを無効にする [aliyun CLI]:
すべてのタスクの完了後、通常の CLI の動作に戻すため、AI セーフティモードを無効にしてください。
aliyun configure ai-mode disable
API とコマンドの表
コマンド一覧、OSS の機能に関する注記、検証に関する注記については、references/related-apis.md を参照してください。このファイルは参照用のメタデータのみを含みます。
ベストプラクティス
- 事前チェック、コマンドの確認、バケットの検証には
aliyunを使用し、実際の定期アップロードには、統合されたaliyun ossutil cpを使用してください。 - すべての
aliyun ossutilコマンド(stat、cp、ls、rm)で--region "${RegionId}"を指定し、エンドポイントと署名リージョンの両方が正しいことを確認してください。CLI プロファイルのデフォルトリージョンが対象バケットのリージョンと異なる場合は、特に重要です。--endpointだけに頼らないでください。署名リージョンは上書きされないため、リージョンをまたいで STS トークンを使用すると、「Invalid signing region in Authorization header」エラーが発生します。 - スケジューラのステップには OS ローカルであることを明記し、Alibaba Cloud API の範囲外であるとユーザーが理解できるようにしてください。
- 可能な限り権限を絞った RAM ポリシーを使用してください。バケット一覧の取得はアカウントスコープ、バケット情報の取得は対象バケット、オブジェクトのアップロードは確認済みのプレフィックスのみを対象にします。
- 実際に実行する前に、対象マシンで
aliyun versionとaliyun configure listを実行してください。 - AK/SK の値を出力したり、スクリプトにハードコードしたり、
~/.aliyun/config.jsonなどの認証情報ファイルを読み込んだりしないでください。また、認証情報の確認をインラインでのシークレット処理に置き換えないでください。 - バケットが存在しない場合は、定期アップロードを設定する前に作成してください。同じバックアップ先として使える既存バケットが複数ある場合は、バックアップの安全性を高めるため、バージョニングが有効なバケットが望ましいとユーザーに案内しても構いません。ただし、そのようなバケットがない場合は、確認済みの既存バケットを使用してください。
- コマンドやスクリプトでは、
LocalSourcePathに必ず絶対パスを使用してください。チルダ(~)は引用符で囲まれた文字列内では展開されず、「not a directory」エラーの原因になることがあるため、使用しないでください。 - cron またはタスクスケジューラ向けの生成スクリプトには、無人実行を妨げる対話型の確認プロンプトを防ぐため、
-fフラグを含めてください。
参考リンク
| 参考資料 | 説明 |
|---|---|
references/cli-installation-guide.md | 作成者のスキルアセットからコピーされた、必須の CLI インストールガイド |
references/verification-method.md | 事前チェック、アップロード、スケジューラ、手動検証のチェックリスト |
references/related-apis.md | OSS API との対応を含む、aliyun および統合 ossutil コマンド一覧 |
references/ram-policies.md | 検証とアップロードに関する最小権限 RAM ポリシーのガイダンス |
references/acceptance-criteria.md | このシナリオにおける正しいコマンドパターンと誤ったコマンドパターン |