Temp3¶
https://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/kb-how-it-works.html?utm_source=chatgpt.com
https://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/choosing-an-aws-vector-database-for-rag-use-cases/vector-db-comparison.html?utm_source=chatgpt.com
https://docs.aws.amazon.com/prescriptive-guidance/latest/retrieval-augmented-generation-options/choosing-option.html?utm_source=chatgpt.com
https://dev.classmethod.jp/articles/methods-to-select-target-document-in-kendra-search/
environment: production
your_command > /dev/null 2>&1 &
https://zenn.dev/solvio/articles/5675473b392b7f
SELECT * FROM your_table
INTO OUTFILE S3 's3://my-export-bucket/export_data.csv'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n';
#!/bin/bash set -e # ---- 設定 ---- DLQ_URL="https://sqs.ap-northeast-1.amazonaws.com/123456789012/my-dead-letter-queue" S3_BUCKET="my-dlq-backup-bucket" MAX_MESSAGES=10 # 一度に取得する件数(最大10) REGION="ap-northeast-1" while true; do # 1. DLQからメッセージ取得 MESSAGES=$(aws sqs receive-message \ --queue-url "$DLQ_URL" \ --max-number-of-messages $MAX_MESSAGES \ --visibility-timeout 60 \ --wait-time-seconds 2 \ --region "$REGION" \ --output json) # メッセージがなければ終了 if [ -z "$(echo "$MESSAGES" | jq -r '.Messages | .[]?')" ]; then echo "DLQ is empty. Backup done." break fi # 2. S3に保存 & 3. DLQから削除 echo "$MESSAGES" | jq -c '.Messages[]' | while read -r MSG; do BODY=$(echo "$MSG" | jq -r '.Body') RECEIPT=$(echo "$MSG" | jq -r '.ReceiptHandle') ID=$(echo "$MSG" | jq -r '.MessageId') FILE="/tmp/${ID}.json" echo "$MSG" > "$FILE" aws s3 cp "$FILE" "s3://${S3_BUCKET}/dlq-backup/${ID}.json" --region "$REGION" aws sqs delete-message \ --queue-url "$DLQ_URL" \ --receipt-handle "$RECEIPT" \ --region "$REGION" echo "Saved and deleted: ${ID}" done done
#!/bin/bash set -e # ---- 設定 ---- S3_BUCKET="my-dlq-backup-bucket" ORIGINAL_QUEUE_URL="https://sqs.ap-northeast-1.amazonaws.com/123456789012/my-original-queue" REGION="ap-northeast-1" # すべてのバックアップファイルを処理 aws s3 ls "s3://${S3_BUCKET}/dlq-backup/" --region "$REGION" | while read -r line; do FILE=$(echo $line | awk '{print $4}') echo "Processing $FILE" # 1. ダウンロード aws s3 cp "s3://${S3_BUCKET}/dlq-backup/${FILE}" "/tmp/${FILE}" --region "$REGION" # 2. メッセージ抽出 BODY=$(jq -r '.Body' "/tmp/${FILE}") # FIFOキューの場合は以下も考慮 # GROUP_ID=$(jq -r '.Attributes.MessageGroupId // "default-group"' "/tmp/${FILE}") # 3. 元キューへ送信 aws sqs send-message \ --queue-url "$ORIGINAL_QUEUE_URL" \ --message-body "$BODY" \ --region "$REGION" echo "Re-sent: $FILE" done
#!/bin/bash set -euo pipefail DLQ_URL="https://sqs.ap-northeast-1.amazonaws.com/123456789012/my-dead-letter-queue" S3_BUCKET="my-dlq-backup-bucket" REGION="ap-northeast-1" MAX_MESSAGES=10 # 一時ファイル(全メッセージを格納) TMP_FILE="/tmp/dlq_all.json" echo "[]" > "$TMP_FILE" while true; do # 1. DLQからメッセージ取得 MESSAGES=$(aws sqs receive-message \ --queue-url "$DLQ_URL" \ --max-number-of-messages $MAX_MESSAGES \ --visibility-timeout 60 \ --wait-time-seconds 2 \ --region "$REGION" \ --output json) # メッセージがなければ終了 if [ -z "$(echo "$MESSAGES" | jq -r '.Messages | .[]?')" ]; then echo "DLQ is empty." break fi # 2. 一時ファイルにマージ(JSON配列結合) jq ". + $(echo "$MESSAGES" | jq '.Messages')" "$TMP_FILE" > "${TMP_FILE}.new" mv "${TMP_FILE}.new" "$TMP_FILE" # 3. DLQから削除 echo "$MESSAGES" | jq -c '.Messages[]' | while read -r MSG; do RECEIPT=$(echo "$MSG" | jq -r '.ReceiptHandle') aws sqs delete-message \ --queue-url "$DLQ_URL" \ --receipt-handle "$RECEIPT" \ --region "$REGION" done done # 4. まとめて S3 に保存 FINAL_FILE="s3://${S3_BUCKET}/dlq-backup/dlq_all.json" aws s3 cp "$TMP_FILE" "$FINAL_FILE" --region "$REGION" echo "Saved all messages to $FINAL_FILE"
jq -c '.[]' dlq_all.json | while read -r MSG; do BODY=$(echo "$MSG" | jq -r '.Body') aws sqs send-message \ --queue-url "$ORIGINAL_QUEUE_URL" \ --message-body "$BODY" \ --region "$REGION" done
import React, { useEffect, useState } from "react"; import { useMsal } from "@azure/msal-react"; import { loginRequest } from "./msalConfig"; interface Group { id: string; displayName: string; } const GroupList: React.FC = () => { const { instance, accounts } = useMsal(); const [groups, setGroups] = useState<Group[]>([]); useEffect(() => { const fetchGroups = async () => { if (accounts.length === 0) return; try { // アクセストークン取得 const response = await instance.acquireTokenSilent({ ...loginRequest, account: accounts[0], }); const accessToken = response.accessToken; // Graph API 呼び出し const res = await fetch("https://graph.microsoft.com/v1.0/me/memberOf", { headers: { Authorization: `Bearer ${accessToken}`, }, }); const data = await res.json(); // グループだけを抽出 (memberOfにはRoleも含まれる可能性がある) const groupList: Group[] = data.value .filter((item: any) => item["@odata.type"] === "#microsoft.graph.group") .map((g: any) => ({ id: g.id, displayName: g.displayName, })); setGroups(groupList); } catch (err) { console.error("Error fetching groups", err); } }; fetchGroups(); }, [accounts, instance]); return ( <div> <h2 className="text-xl font-bold mb-2">所属グループ</h2> <ul className="list-disc pl-6"> {groups.map((group) => ( <li key={group.id}>{group.displayName}</li> ))} </ul> </div> ); }; export default GroupList;