Skip to main content 首页 创作者 jeremylongshore tons-of-skills-marketplace oraclecloud-migration-deep-dive
oraclecloud-migration-deep-dive Migrate workloads from AWS or Azure to OCI — IAM translation, networking mapping, compute image import, and data migration.
Use when planning an AWS-to-OCI or Azure-to-OCI migration, translating cloud concepts, or importing custom images.
Trigger with "oraclecloud migration", "aws to oci", "azure to oci", "oci migration deep dive".
跳到安装 Skills Marketplace 发现并探索由社区构建的 Agent Skills
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/jeremylongshore/tons-of-skills-marketplace --skill oraclecloud-migration-deep-dive命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
下载 Zip 下载中... 同仓库更多 Skills langchain-deploy-integration Deploy a LangChain 1.0 / LangGraph 1.0 app to Cloud Run, Vercel, or LangServe correctly — with timeouts sized for chain length, cold-start mitigation, SSE anti-buffering headers, and Secret Manager over .env. Use when prepping a first production deploy, debugging a stream that hangs behind a proxy, or diagnosing p99 latency spikes. Trigger with "langchain deploy", "langchain cloud run", "langchain vercel python", "langchain langserve", or "langchain docker".
langchain-langgraph-agents Build a correct LangGraph 1.0 ReAct agent with create_react_agent — typed tools, error propagation, recursion caps, and stop conditions that actually stop. Use when writing a first tool-calling agent, migrating from AgentExecutor or initialize_agent, or diagnosing an agent that loops on vague prompts. Trigger with "langgraph agent", "create_react_agent", "langgraph tool calling", "AgentExecutor migration", or "agent loop cost".
langchain-langgraph-human-in-loop Build LangGraph 1.0 human-in-the-loop approval flows with interrupt_before /
interrupt_after and Command(resume=...) — JSON-serializable state, clean
resume semantics, and UI wiring for approval decisions. Use when adding an
approval gate before an expensive tool call, wiring a Slack/web UI for agent
approvals, or debugging a graph that crashes on interrupt.
Trigger with "langgraph human in loop", "langgraph interrupt_before",
"langgraph approval flow", "Command resume", "langgraph HITL".
jeremylongshore
jeremylongshore/tons-of-skills-marketplace
打开 GitHub 仓库 name oraclecloud-migration-deep-dive description Migrate workloads from AWS or Azure to OCI — IAM translation, networking mapping, compute image import, and data migration.
Use when planning an AWS-to-OCI or Azure-to-OCI migration, translating cloud concepts, or importing custom images.
Trigger with "oraclecloud migration", "aws to oci", "azure to oci", "oci migration deep dive".
allowed-tools Read, Write, Edit, Bash(oci:*), Bash(python3:*), Bash(terraform:*), Grep version 1.7.0 license MIT author Jeremy Longshore <jeremy@intentsolutions.io> tags ["saas","oraclecloud","oci"] compatibility Designed for Claude Code
Oracle Cloud Migration Deep Dive
Overview
Migrating to OCI from AWS or Azure requires translating IAM concepts (roles to policies, accounts to compartments), networking (VPC to VCN, Security Groups to NSGs), and compute (AMI to custom image). OCI's migration tooling is underdocumented compared to AWS Migration Hub or Azure Migrate. This skill provides comprehensive concept mapping tables, custom image import procedures, network topology translation, IAM policy translation, and data migration patterns — everything needed for a controlled cloud migration.
Purpose: Translate AWS/Azure architecture into OCI equivalents and execute the migration using OCI CLI and Python SDK, with verification at each step.
Prerequisites
OCI account with an active tenancy — https://cloud.oracle.com
OCI CLI installed and configured — ~/.oci/config validated (see oraclecloud-install-auth)
Python 3.8+ with the OCI SDK — pip install oci
Source cloud CLI — aws CLI or az CLI for exporting resources
Object Storage bucket in OCI for staging image imports
IAM policies : manage objects in compartment, manage custom-images in compartment, manage virtual-network-family in compartment
Instructions
Step 1: AWS-to-OCI Concept Mapping
AWS Concept OCI Equivalent Key Differences Account Tenancy One tenancy = one billing entity, use compartments for isolation Organization OU Compartment Compartments are hierarchical, up to 6 levels deep IAM Role IAM Policy OCI policies use allow group X to verb resource in compartment Y syntax IAM User IAM User Same concept, but OCI uses API key auth (not access keys) VPC VCN VCN subnets are regional (not AZ-scoped like AWS) Security Group Network Security Group (NSG) NSGs attach to VNICs, not instances. Also have Security Lists (subnet-level)
Route Table Route Table Similar, but OCI route rules target gateway OCIDs
Internet Gateway Internet Gateway Identical concept
NAT Gateway NAT Gateway Identical concept
VPC Endpoint Service Gateway Service Gateway routes to OCI services without internet
VPC Peering LPG / DRG LPG for same-region, DRG for cross-region or on-premises
AMI Custom Image Export as VMDK/QCOW2, import via Object Storage
EBS Block Volume Attachable block storage, similar performance tiers
S3 Object Storage Compatible API (S3 compatibility mode available)
RDS Autonomous Database Fully managed, but different administration model
EC2 Instance Type Shape Flex shapes allow fractional OCPU allocation
Availability Zone Availability Domain (AD) Same concept, 1-3 ADs per region
CloudWatch Monitoring Service Uses MQL (Monitoring Query Language) instead of CloudWatch metrics
CloudTrail Audit Service Automatic, no setup required
Step 2: Azure-to-OCI Concept Mapping Azure Concept OCI Equivalent Key Differences Subscription Compartment OCI uses compartments for billing isolation (not separate subscriptions) Resource Group Compartment Compartments are hierarchical; resource groups are flat Azure AD OCI IAM / IDCS OCI Identity Domains replaces IDCS for SSO/federation VNet VCN OCI subnets are regional, not tied to a zone NSG NSG Nearly identical concept Azure SQL Autonomous Database Different scaling model (OCPU-based) Managed Disk Block Volume Similar, but OCI uses volume groups for snapshots Blob Storage Object Storage Different API, but S3-compatible mode available Azure Monitor Monitoring Service MQL query language instead of Kusto Azure Policy Cloud Guard Detective controls, not preventive like Azure Policy
Step 3: Custom Image Import (AWS AMI to OCI) Export the AMI from AWS, then import to OCI via Object Storage:
aws ec2 create-store-image-task \
--image-id ami-0123456789abcdef0 \
--bucket my-export-bucket
aws s3 cp s3://my-export-bucket/ami-0123456789abcdef0.vmdk ./image.vmdk
oci os object put \
--bucket-name migration-staging \
--file ./image.vmdk \
--name "imported-image.vmdk" \
--namespace "$NAMESPACE "
import oci
config = oci.config.from_file("~/.oci/config" )
compute = oci.core.ComputeClient(config)
image = compute.create_image(
oci.core.models.CreateImageDetails(
compartment_id="COMPARTMENT_OCID" ,
display_name="migrated-from-aws" ,
image_source_details=oci.core.models.ImageSourceViaObjectStorageTupleDetails(
source_type="objectStorageTuple" ,
bucket_name="migration-staging" ,
namespace_name="NAMESPACE" ,
object_name="imported-image.vmdk" ,
source_image_type="VMDK" ,
),
)
).data
print (f"Image import started: {image.id } " )
print (f"State: {image.lifecycle_state} " )
Step 4: IAM Policy Translation AWS IAM roles use JSON policies attached to entities. OCI uses human-readable policy statements attached to compartments:
# AWS: Allow EC2 instances to read S3
{
"Effect": "Allow",
"Action": ["s3:GetObject", "s3:ListBucket"],
"Resource": "arn:aws:s3:::my-bucket/*"
}
# OCI equivalent:
allow dynamic-group app-instances to read objects in compartment prod where target.bucket.name='my-bucket'
AWS Policy OCI Policy Statement AdministratorAccessallow group admins to manage all-resources in tenancyReadOnlyAccessallow group readers to inspect all-resources in tenancyAmazonEC2FullAccessallow group compute-admins to manage instances in compartment prodAmazonS3ReadOnlyAccessallow group readers to read objects in compartment prodAmazonVPCFullAccessallow group net-admins to manage virtual-network-family in compartment prod
oci iam policy create \
--compartment-id "$COMPARTMENT_OCID " \
--name "app-compute-policy" \
--description "Allow app team to manage compute in prod" \
--statements '["allow group app-team to manage instances in compartment prod","allow group app-team to use volumes in compartment prod"]'
Step 5: Network Topology Translation Translate an AWS VPC with public/private subnets into an OCI VCN:
aws ec2 describe-vpcs --vpc-ids vpc-0123456789abcdef0 --output json > aws-vpc.json
aws ec2 describe-subnets --filters "Name=vpc-id,Values=vpc-0123456789abcdef0" --output json > aws-subnets.json
aws ec2 describe-route-tables --filters "Name=vpc-id,Values=vpc-0123456789abcdef0" --output json > aws-routes.json
oci network vcn create \
--compartment-id "$COMPARTMENT_OCID " \
--display-name "migrated-vcn" \
--cidr-blocks '["10.0.0.0/16"]' \
--dns-label "migratedvcn"
Step 6: Data Migration (S3 to Object Storage) OCI Object Storage supports S3-compatible API, enabling direct migration:
import oci
config = oci.config.from_file("~/.oci/config" )
os_client = oci.object_storage.ObjectStorageClient(config)
namespace = os_client.get_namespace().data
os_client.create_bucket(
namespace_name=namespace,
create_bucket_details=oci.object_storage.models.CreateBucketDetails(
compartment_id="COMPARTMENT_OCID" ,
name="migrated-data" ,
storage_tier="Standard" ,
),
)
with open ("data-export.csv" , "rb" ) as f:
os_client.put_object(
namespace_name=namespace,
bucket_name="migrated-data" ,
object_name="data-export.csv" ,
put_object_body=f,
)
print (f"Uploaded to: https://objectstorage.{config['region' ]} .oraclecloud.com/n/{namespace} /b/migrated-data/o/data-export.csv" )
S3 Compatibility mode for tools that speak S3 natively:
aws s3 sync s3://source-bucket/ s3://migrated-data/ \
--endpoint-url "https://NAMESPACE.compat.objectstorage.us-ashburn-1.oraclecloud.com"
Output Successful completion produces:
AWS-to-OCI and Azure-to-OCI concept mapping tables for architecture translation
Custom image imported from VMDK into OCI compute (ready to launch instances)
IAM policies translated from AWS JSON format to OCI policy statements
Network topology (VCN, subnets, gateways) matching the source VPC/VNet configuration
Data migrated from S3 to OCI Object Storage via direct upload or S3-compatible API
Error Handling Error Code Cause Solution NotAuthorizedOrNotFound 404 Missing IAM policy for image import Add allow group migrators to manage custom-images in compartment prod InvalidParameter 400 Unsupported image format OCI accepts VMDK and QCOW2 only — convert other formats first NotAuthenticated 401 API key misconfigured Re-validate: oci iam user get --user-id $(grep ^user ~/.oci/config | cut -d= -f2) TooManyRequests 429 Rate limited during bulk upload Add delays between Object Storage uploads — no Retry-After header InternalError 500 OCI service issue Retry after 60 seconds; check https://ocistatus.oraclecloud.com Image import stuck in IMPORTING — Large image or Object Storage throttling Check work request: oci work-requests work-request get --work-request-id <id>
Examples Quick migration pre-flight check:
oci iam compartment get --compartment-id "$COMPARTMENT_OCID " \
--query 'data.{name:name, state:"lifecycle-state"}' --output table
oci os bucket get --bucket-name migration-staging --namespace "$NAMESPACE " \
--query 'data.name' --raw-output
oci compute image list --compartment-id "$COMPARTMENT_OCID " \
--query 'data[?contains("display-name",`migrated`)].{name:"display-name",state:"lifecycle-state"}' \
--output table
Resources
Next Steps After migration, review oraclecloud-reference-architecture to validate the OCI topology, then run oraclecloud-prod-checklist to ensure the migrated environment meets production standards.