aws-iam-language-server 0.0.16 → 0.0.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/data/condition-keys/global.json +180 -60
- package/src/data/servicereference/actions.json +1 -1
- package/src/data/servicereference/services/a4b.json +1 -1
- package/src/data/servicereference/services/access-analyzer.json +1 -1
- package/src/data/servicereference/services/account.json +1 -1
- package/src/data/servicereference/services/acm-pca.json +1 -1
- package/src/data/servicereference/services/acm.json +1 -1
- package/src/data/servicereference/services/aco-automation.json +1 -1
- package/src/data/servicereference/services/aidevops.json +1 -1
- package/src/data/servicereference/services/aiops.json +1 -1
- package/src/data/servicereference/services/airflow-serverless.json +1 -1
- package/src/data/servicereference/services/airflow.json +1 -1
- package/src/data/servicereference/services/amplify.json +1 -1
- package/src/data/servicereference/services/amplifybackend.json +1 -1
- package/src/data/servicereference/services/amplifyuibuilder.json +1 -1
- package/src/data/servicereference/services/aoss.json +1 -1
- package/src/data/servicereference/services/apigateway.json +1 -1
- package/src/data/servicereference/services/app-integrations.json +1 -1
- package/src/data/servicereference/services/appconfig.json +1 -1
- package/src/data/servicereference/services/appfabric.json +1 -1
- package/src/data/servicereference/services/appflow.json +1 -1
- package/src/data/servicereference/services/application-autoscaling.json +1 -1
- package/src/data/servicereference/services/application-signals.json +1 -1
- package/src/data/servicereference/services/applicationinsights.json +1 -1
- package/src/data/servicereference/services/appmesh-preview.json +1 -1
- package/src/data/servicereference/services/appmesh.json +1 -1
- package/src/data/servicereference/services/apprunner.json +1 -1
- package/src/data/servicereference/services/appstream.json +1 -1
- package/src/data/servicereference/services/appstudio.json +1 -1
- package/src/data/servicereference/services/appsync.json +1 -1
- package/src/data/servicereference/services/apptest.json +1 -1
- package/src/data/servicereference/services/aps.json +1 -1
- package/src/data/servicereference/services/arc-region-switch.json +1 -1
- package/src/data/servicereference/services/arc-zonal-shift.json +1 -1
- package/src/data/servicereference/services/artifact.json +1 -1
- package/src/data/servicereference/services/athena.json +1 -1
- package/src/data/servicereference/services/auditmanager.json +1 -1
- package/src/data/servicereference/services/autoscaling.json +1 -1
- package/src/data/servicereference/services/aws-external-anthropic.json +1 -0
- package/src/data/servicereference/services/aws-marketplace.json +1 -1
- package/src/data/servicereference/services/b2bi.json +1 -1
- package/src/data/servicereference/services/backup-gateway.json +1 -1
- package/src/data/servicereference/services/backup-search.json +1 -1
- package/src/data/servicereference/services/backup.json +1 -1
- package/src/data/servicereference/services/batch.json +1 -1
- package/src/data/servicereference/services/bcm-dashboards.json +1 -1
- package/src/data/servicereference/services/bcm-data-exports.json +1 -1
- package/src/data/servicereference/services/bcm-pricing-calculator.json +1 -1
- package/src/data/servicereference/services/bedrock-agentcore.json +1 -1
- package/src/data/servicereference/services/bedrock-mantle.json +1 -1
- package/src/data/servicereference/services/bedrock.json +1 -1
- package/src/data/servicereference/services/billing.json +1 -1
- package/src/data/servicereference/services/billingconductor.json +1 -1
- package/src/data/servicereference/services/braket.json +1 -1
- package/src/data/servicereference/services/budgets.json +1 -1
- package/src/data/servicereference/services/bugbust.json +1 -1
- package/src/data/servicereference/services/cases.json +1 -1
- package/src/data/servicereference/services/cassandra.json +1 -1
- package/src/data/servicereference/services/ce.json +1 -1
- package/src/data/servicereference/services/chatbot.json +1 -1
- package/src/data/servicereference/services/chime.json +1 -1
- package/src/data/servicereference/services/cleanrooms-ml.json +1 -1
- package/src/data/servicereference/services/cleanrooms.json +1 -1
- package/src/data/servicereference/services/cloud9.json +1 -1
- package/src/data/servicereference/services/clouddirectory.json +1 -1
- package/src/data/servicereference/services/cloudformation.json +1 -1
- package/src/data/servicereference/services/cloudfront-keyvaluestore.json +1 -1
- package/src/data/servicereference/services/cloudfront.json +1 -1
- package/src/data/servicereference/services/cloudhsm.json +1 -1
- package/src/data/servicereference/services/cloudsearch.json +1 -1
- package/src/data/servicereference/services/cloudshell.json +1 -1
- package/src/data/servicereference/services/cloudtrail-data.json +1 -1
- package/src/data/servicereference/services/cloudtrail.json +1 -1
- package/src/data/servicereference/services/cloudwatch.json +1 -1
- package/src/data/servicereference/services/codeartifact.json +1 -1
- package/src/data/servicereference/services/codebuild.json +1 -1
- package/src/data/servicereference/services/codecatalyst.json +1 -1
- package/src/data/servicereference/services/codecommit.json +1 -1
- package/src/data/servicereference/services/codeconnections.json +1 -1
- package/src/data/servicereference/services/codedeploy.json +1 -1
- package/src/data/servicereference/services/codeguru-profiler.json +1 -1
- package/src/data/servicereference/services/codeguru-reviewer.json +1 -1
- package/src/data/servicereference/services/codeguru-security.json +1 -1
- package/src/data/servicereference/services/codepipeline.json +1 -1
- package/src/data/servicereference/services/codestar-connections.json +1 -1
- package/src/data/servicereference/services/codestar-notifications.json +1 -1
- package/src/data/servicereference/services/codestar.json +1 -1
- package/src/data/servicereference/services/codewhisperer.json +1 -1
- package/src/data/servicereference/services/cognito-identity.json +1 -1
- package/src/data/servicereference/services/cognito-idp.json +1 -1
- package/src/data/servicereference/services/cognito-sync.json +1 -1
- package/src/data/servicereference/services/comprehend.json +1 -1
- package/src/data/servicereference/services/comprehendmedical.json +1 -1
- package/src/data/servicereference/services/compute-optimizer.json +1 -1
- package/src/data/servicereference/services/config.json +1 -1
- package/src/data/servicereference/services/connect-campaigns.json +1 -1
- package/src/data/servicereference/services/connect.json +1 -1
- package/src/data/servicereference/services/consoleapp.json +1 -1
- package/src/data/servicereference/services/controlcatalog.json +1 -1
- package/src/data/servicereference/services/controltower.json +1 -1
- package/src/data/servicereference/services/cur.json +1 -1
- package/src/data/servicereference/services/databrew.json +1 -1
- package/src/data/servicereference/services/dataexchange.json +1 -1
- package/src/data/servicereference/services/datapipeline.json +1 -1
- package/src/data/servicereference/services/datasync.json +1 -1
- package/src/data/servicereference/services/datazone.json +1 -1
- package/src/data/servicereference/services/dax.json +1 -1
- package/src/data/servicereference/services/deadline.json +1 -1
- package/src/data/servicereference/services/detective.json +1 -1
- package/src/data/servicereference/services/devicefarm.json +1 -1
- package/src/data/servicereference/services/devops-guru.json +1 -1
- package/src/data/servicereference/services/directconnect.json +1 -1
- package/src/data/servicereference/services/discovery.json +1 -1
- package/src/data/servicereference/services/dlm.json +1 -1
- package/src/data/servicereference/services/dms.json +1 -1
- package/src/data/servicereference/services/docdb-elastic.json +1 -1
- package/src/data/servicereference/services/drs.json +1 -1
- package/src/data/servicereference/services/ds-data.json +1 -1
- package/src/data/servicereference/services/ds.json +1 -1
- package/src/data/servicereference/services/dsql.json +1 -1
- package/src/data/servicereference/services/dynamodb.json +1 -1
- package/src/data/servicereference/services/ebs.json +1 -1
- package/src/data/servicereference/services/ec2-instance-connect.json +1 -1
- package/src/data/servicereference/services/ec2.json +1 -1
- package/src/data/servicereference/services/ec2messages.json +1 -1
- package/src/data/servicereference/services/ecr-public.json +1 -1
- package/src/data/servicereference/services/ecr.json +1 -1
- package/src/data/servicereference/services/ecs.json +1 -1
- package/src/data/servicereference/services/eks-auth.json +1 -1
- package/src/data/servicereference/services/eks.json +1 -1
- package/src/data/servicereference/services/elasticache.json +1 -1
- package/src/data/servicereference/services/elasticbeanstalk.json +1 -1
- package/src/data/servicereference/services/elasticfilesystem.json +1 -1
- package/src/data/servicereference/services/elasticloadbalancing.json +1 -1
- package/src/data/servicereference/services/elasticmapreduce.json +1 -1
- package/src/data/servicereference/services/elastictranscoder.json +1 -1
- package/src/data/servicereference/services/elemental-appliances-software.json +1 -1
- package/src/data/servicereference/services/elemental-inference.json +1 -1
- package/src/data/servicereference/services/elemental-support-cases.json +1 -1
- package/src/data/servicereference/services/emr-containers.json +1 -1
- package/src/data/servicereference/services/emr-serverless.json +1 -1
- package/src/data/servicereference/services/entityresolution.json +1 -1
- package/src/data/servicereference/services/es.json +1 -1
- package/src/data/servicereference/services/events.json +1 -1
- package/src/data/servicereference/services/evidently.json +1 -1
- package/src/data/servicereference/services/evs.json +1 -1
- package/src/data/servicereference/services/execute-api.json +1 -1
- package/src/data/servicereference/services/finspace-api.json +1 -1
- package/src/data/servicereference/services/finspace.json +1 -1
- package/src/data/servicereference/services/firehose.json +1 -1
- package/src/data/servicereference/services/fis.json +1 -1
- package/src/data/servicereference/services/fms.json +1 -1
- package/src/data/servicereference/services/forecast.json +1 -1
- package/src/data/servicereference/services/frauddetector.json +1 -1
- package/src/data/servicereference/services/freertos.json +1 -1
- package/src/data/servicereference/services/fsx.json +1 -1
- package/src/data/servicereference/services/gamelift.json +1 -1
- package/src/data/servicereference/services/gameliftstreams.json +1 -1
- package/src/data/servicereference/services/geo-maps.json +1 -1
- package/src/data/servicereference/services/geo-places.json +1 -1
- package/src/data/servicereference/services/geo-routes.json +1 -1
- package/src/data/servicereference/services/geo.json +1 -1
- package/src/data/servicereference/services/glacier.json +1 -1
- package/src/data/servicereference/services/globalaccelerator.json +1 -1
- package/src/data/servicereference/services/glue.json +1 -1
- package/src/data/servicereference/services/grafana.json +1 -1
- package/src/data/servicereference/services/greengrass.json +1 -1
- package/src/data/servicereference/services/groundstation.json +1 -1
- package/src/data/servicereference/services/guardduty.json +1 -1
- package/src/data/servicereference/services/health-agent.json +1 -1
- package/src/data/servicereference/services/health.json +1 -1
- package/src/data/servicereference/services/healthlake.json +1 -1
- package/src/data/servicereference/services/honeycode.json +1 -1
- package/src/data/servicereference/services/iam.json +1 -1
- package/src/data/servicereference/services/identity-sync.json +1 -1
- package/src/data/servicereference/services/identitystore.json +1 -1
- package/src/data/servicereference/services/imagebuilder.json +1 -1
- package/src/data/servicereference/services/inspector2.json +1 -1
- package/src/data/servicereference/services/interconnect.json +1 -1
- package/src/data/servicereference/services/internetmonitor.json +1 -1
- package/src/data/servicereference/services/invoicing.json +1 -1
- package/src/data/servicereference/services/iot.json +1 -1
- package/src/data/servicereference/services/iotanalytics.json +1 -1
- package/src/data/servicereference/services/iotdeviceadvisor.json +1 -1
- package/src/data/servicereference/services/iotevents.json +1 -1
- package/src/data/servicereference/services/iotfleethub.json +1 -1
- package/src/data/servicereference/services/iotfleetwise.json +1 -1
- package/src/data/servicereference/services/iotjobsdata.json +1 -1
- package/src/data/servicereference/services/iotmanagedintegrations.json +1 -1
- package/src/data/servicereference/services/iotsitewise.json +1 -1
- package/src/data/servicereference/services/iottwinmaker.json +1 -1
- package/src/data/servicereference/services/iotwireless.json +1 -1
- package/src/data/servicereference/services/iq-permission.json +1 -1
- package/src/data/servicereference/services/iq.json +1 -1
- package/src/data/servicereference/services/ivs.json +1 -1
- package/src/data/servicereference/services/ivschat.json +1 -1
- package/src/data/servicereference/services/kafka-cluster.json +1 -1
- package/src/data/servicereference/services/kafka.json +1 -1
- package/src/data/servicereference/services/kafkaconnect.json +1 -1
- package/src/data/servicereference/services/kendra-ranking.json +1 -1
- package/src/data/servicereference/services/kendra.json +1 -1
- package/src/data/servicereference/services/kinesis.json +1 -1
- package/src/data/servicereference/services/kinesisanalytics.json +1 -1
- package/src/data/servicereference/services/kinesisvideo.json +1 -1
- package/src/data/servicereference/services/kms.json +1 -1
- package/src/data/servicereference/services/lakeformation.json +1 -1
- package/src/data/servicereference/services/lambda.json +1 -1
- package/src/data/servicereference/services/launchwizard.json +1 -1
- package/src/data/servicereference/services/lex.json +1 -1
- package/src/data/servicereference/services/license-manager-linux-subscriptions.json +1 -1
- package/src/data/servicereference/services/license-manager-user-subscriptions.json +1 -1
- package/src/data/servicereference/services/license-manager.json +1 -1
- package/src/data/servicereference/services/lightsail.json +1 -1
- package/src/data/servicereference/services/logs.json +1 -1
- package/src/data/servicereference/services/lookoutequipment.json +1 -1
- package/src/data/servicereference/services/lookoutmetrics.json +1 -1
- package/src/data/servicereference/services/lookoutvision.json +1 -1
- package/src/data/servicereference/services/m2.json +1 -1
- package/src/data/servicereference/services/machinelearning.json +1 -1
- package/src/data/servicereference/services/macie2.json +1 -1
- package/src/data/servicereference/services/managedblockchain.json +1 -1
- package/src/data/servicereference/services/mapcredits.json +1 -1
- package/src/data/servicereference/services/mediaconnect.json +1 -1
- package/src/data/servicereference/services/mediaconvert.json +1 -1
- package/src/data/servicereference/services/medialive.json +1 -1
- package/src/data/servicereference/services/mediapackage-vod.json +1 -1
- package/src/data/servicereference/services/mediapackage.json +1 -1
- package/src/data/servicereference/services/mediapackagev2.json +1 -1
- package/src/data/servicereference/services/mediastore.json +1 -1
- package/src/data/servicereference/services/mediatailor.json +1 -1
- package/src/data/servicereference/services/medical-imaging.json +1 -1
- package/src/data/servicereference/services/memorydb.json +1 -1
- package/src/data/servicereference/services/mgh.json +1 -1
- package/src/data/servicereference/services/mgn.json +1 -1
- package/src/data/servicereference/services/migrationhub-orchestrator.json +1 -1
- package/src/data/servicereference/services/mobiletargeting.json +1 -1
- package/src/data/servicereference/services/monitron.json +1 -1
- package/src/data/servicereference/services/mpa.json +1 -1
- package/src/data/servicereference/services/mq.json +1 -1
- package/src/data/servicereference/services/neptune-db.json +1 -1
- package/src/data/servicereference/services/neptune-graph.json +1 -1
- package/src/data/servicereference/services/network-firewall.json +1 -1
- package/src/data/servicereference/services/networkflowmonitor.json +1 -1
- package/src/data/servicereference/services/networkmanager.json +1 -1
- package/src/data/servicereference/services/networkmonitor.json +1 -1
- package/src/data/servicereference/services/nimble.json +1 -1
- package/src/data/servicereference/services/notifications-contacts.json +1 -1
- package/src/data/servicereference/services/notifications.json +1 -1
- package/src/data/servicereference/services/nova-act.json +1 -1
- package/src/data/servicereference/services/oam.json +1 -1
- package/src/data/servicereference/services/observabilityadmin.json +1 -1
- package/src/data/servicereference/services/odb.json +1 -1
- package/src/data/servicereference/services/omics.json +1 -1
- package/src/data/servicereference/services/one.json +1 -1
- package/src/data/servicereference/services/opensearch.json +1 -1
- package/src/data/servicereference/services/opsworks-cm.json +1 -1
- package/src/data/servicereference/services/opsworks.json +1 -1
- package/src/data/servicereference/services/organizations.json +1 -1
- package/src/data/servicereference/services/osis.json +1 -1
- package/src/data/servicereference/services/outposts.json +1 -1
- package/src/data/servicereference/services/panorama.json +1 -1
- package/src/data/servicereference/services/partnercentral-account-management.json +1 -1
- package/src/data/servicereference/services/partnercentral.json +1 -1
- package/src/data/servicereference/services/payment-cryptography.json +1 -1
- package/src/data/servicereference/services/payments.json +1 -1
- package/src/data/servicereference/services/pca-connector-ad.json +1 -1
- package/src/data/servicereference/services/pca-connector-scep.json +1 -1
- package/src/data/servicereference/services/pcs.json +1 -1
- package/src/data/servicereference/services/personalize.json +1 -1
- package/src/data/servicereference/services/pi.json +1 -1
- package/src/data/servicereference/services/pipes.json +1 -1
- package/src/data/servicereference/services/polly.json +1 -1
- package/src/data/servicereference/services/pricingplanmanager.json +1 -1
- package/src/data/servicereference/services/private-networks.json +1 -1
- package/src/data/servicereference/services/profile.json +1 -1
- package/src/data/servicereference/services/proton.json +1 -1
- package/src/data/servicereference/services/purchase-orders.json +1 -1
- package/src/data/servicereference/services/q.json +1 -1
- package/src/data/servicereference/services/qapps.json +1 -1
- package/src/data/servicereference/services/qbusiness.json +1 -1
- package/src/data/servicereference/services/qdeveloper.json +1 -1
- package/src/data/servicereference/services/qldb.json +1 -1
- package/src/data/servicereference/services/quicksight.json +1 -1
- package/src/data/servicereference/services/ram.json +1 -1
- package/src/data/servicereference/services/rbin.json +1 -1
- package/src/data/servicereference/services/rds-data.json +1 -1
- package/src/data/servicereference/services/rds-db.json +1 -1
- package/src/data/servicereference/services/rds.json +1 -1
- package/src/data/servicereference/services/redshift-data.json +1 -1
- package/src/data/servicereference/services/redshift-serverless.json +1 -1
- package/src/data/servicereference/services/redshift.json +1 -1
- package/src/data/servicereference/services/refactor-spaces.json +1 -1
- package/src/data/servicereference/services/rekognition.json +1 -1
- package/src/data/servicereference/services/repostspace.json +1 -1
- package/src/data/servicereference/services/resiliencehub.json +1 -1
- package/src/data/servicereference/services/resource-explorer-2.json +1 -1
- package/src/data/servicereference/services/resource-groups.json +1 -1
- package/src/data/servicereference/services/robomaker.json +1 -1
- package/src/data/servicereference/services/rolesanywhere.json +1 -1
- package/src/data/servicereference/services/route53-recovery-cluster.json +1 -1
- package/src/data/servicereference/services/route53-recovery-control-config.json +1 -1
- package/src/data/servicereference/services/route53-recovery-readiness.json +1 -1
- package/src/data/servicereference/services/route53.json +1 -1
- package/src/data/servicereference/services/route53globalresolver.json +1 -1
- package/src/data/servicereference/services/route53profiles.json +1 -1
- package/src/data/servicereference/services/route53resolver.json +1 -1
- package/src/data/servicereference/services/rtbfabric.json +1 -1
- package/src/data/servicereference/services/rum.json +1 -1
- package/src/data/servicereference/services/s3-object-lambda.json +1 -1
- package/src/data/servicereference/services/s3-outposts.json +1 -1
- package/src/data/servicereference/services/s3.json +1 -1
- package/src/data/servicereference/services/s3express.json +1 -1
- package/src/data/servicereference/services/s3files.json +1 -0
- package/src/data/servicereference/services/s3tables.json +1 -1
- package/src/data/servicereference/services/s3vectors.json +1 -1
- package/src/data/servicereference/services/sagemaker-geospatial.json +1 -1
- package/src/data/servicereference/services/sagemaker-mlflow.json +1 -1
- package/src/data/servicereference/services/sagemaker.json +1 -1
- package/src/data/servicereference/services/savingsplans.json +1 -1
- package/src/data/servicereference/services/scheduler.json +1 -1
- package/src/data/servicereference/services/schemas.json +1 -1
- package/src/data/servicereference/services/scn.json +1 -1
- package/src/data/servicereference/services/sdb.json +1 -1
- package/src/data/servicereference/services/secretsmanager.json +1 -1
- package/src/data/servicereference/services/security-ir.json +1 -1
- package/src/data/servicereference/services/securityagent.json +1 -1
- package/src/data/servicereference/services/securityhub.json +1 -1
- package/src/data/servicereference/services/securitylake.json +1 -1
- package/src/data/servicereference/services/serverlessrepo.json +1 -1
- package/src/data/servicereference/services/servicecatalog.json +1 -1
- package/src/data/servicereference/services/servicediscovery.json +1 -1
- package/src/data/servicereference/services/servicequotas.json +1 -1
- package/src/data/servicereference/services/ses.json +1 -1
- package/src/data/servicereference/services/shield.json +1 -1
- package/src/data/servicereference/services/signer.json +1 -1
- package/src/data/servicereference/services/signin.json +1 -1
- package/src/data/servicereference/services/simspaceweaver.json +1 -1
- package/src/data/servicereference/services/sms-voice.json +1 -1
- package/src/data/servicereference/services/snow-device-management.json +1 -1
- package/src/data/servicereference/services/sns.json +1 -1
- package/src/data/servicereference/services/social-messaging.json +1 -1
- package/src/data/servicereference/services/sqlworkbench.json +1 -1
- package/src/data/servicereference/services/sqs.json +1 -1
- package/src/data/servicereference/services/ssm-contacts.json +1 -1
- package/src/data/servicereference/services/ssm-incidents.json +1 -1
- package/src/data/servicereference/services/ssm-quicksetup.json +1 -1
- package/src/data/servicereference/services/ssm-sap.json +1 -1
- package/src/data/servicereference/services/ssm.json +1 -1
- package/src/data/servicereference/services/ssmmessages.json +1 -1
- package/src/data/servicereference/services/sso-oauth.json +1 -1
- package/src/data/servicereference/services/sso.json +1 -1
- package/src/data/servicereference/services/states.json +1 -1
- package/src/data/servicereference/services/storagegateway.json +1 -1
- package/src/data/servicereference/services/sts.json +1 -1
- package/src/data/servicereference/services/sustainability.json +1 -1
- package/src/data/servicereference/services/swf.json +1 -1
- package/src/data/servicereference/services/synthetics.json +1 -1
- package/src/data/servicereference/services/textract.json +1 -1
- package/src/data/servicereference/services/thinclient.json +1 -1
- package/src/data/servicereference/services/timestream-influxdb.json +1 -1
- package/src/data/servicereference/services/timestream.json +1 -1
- package/src/data/servicereference/services/tnb.json +1 -1
- package/src/data/servicereference/services/transcribe.json +1 -1
- package/src/data/servicereference/services/transfer.json +1 -1
- package/src/data/servicereference/services/transform-custom.json +1 -1
- package/src/data/servicereference/services/transform.json +1 -1
- package/src/data/servicereference/services/translate.json +1 -1
- package/src/data/servicereference/services/trustedadvisor.json +1 -1
- package/src/data/servicereference/services/ts.json +1 -1
- package/src/data/servicereference/services/user-subscriptions.json +1 -1
- package/src/data/servicereference/services/vendor-insights.json +1 -1
- package/src/data/servicereference/services/verifiedpermissions.json +1 -1
- package/src/data/servicereference/services/voiceid.json +1 -1
- package/src/data/servicereference/services/vpc-lattice-svcs.json +1 -1
- package/src/data/servicereference/services/vpc-lattice.json +1 -1
- package/src/data/servicereference/services/vpce.json +1 -1
- package/src/data/servicereference/services/waf-regional.json +1 -1
- package/src/data/servicereference/services/waf.json +1 -1
- package/src/data/servicereference/services/wafv2.json +1 -1
- package/src/data/servicereference/services/wellarchitected.json +1 -1
- package/src/data/servicereference/services/wickr.json +1 -1
- package/src/data/servicereference/services/wisdom.json +1 -1
- package/src/data/servicereference/services/workdocs.json +1 -1
- package/src/data/servicereference/services/worklink.json +1 -1
- package/src/data/servicereference/services/workmail.json +1 -1
- package/src/data/servicereference/services/workmailmessageflow.json +1 -1
- package/src/data/servicereference/services/workspaces-instances.json +1 -1
- package/src/data/servicereference/services/workspaces-web.json +1 -1
- package/src/data/servicereference/services/workspaces.json +1 -1
- package/src/data/servicereference/services/xray.json +1 -1
- package/src/data/servicereference/services.json +1 -1
- package/src/handlers/completion/action-value.d.ts +0 -2
- package/src/handlers/completion/action-value.js +1 -17
- package/src/handlers/completion/condition-block.js +1 -11
- package/src/handlers/completion/condition-key.d.ts +0 -2
- package/src/handlers/completion/condition-key.js +9 -22
- package/src/handlers/completion/condition-operator.js +2 -1
- package/src/handlers/completion/effect-value.js +10 -6
- package/src/handlers/completion/principal-block-type.js +6 -12
- package/src/handlers/completion/principal-block.js +2 -9
- package/src/handlers/completion/principal-identifier-completions.js +17 -11
- package/src/handlers/completion/principal-type.js +6 -6
- package/src/handlers/completion/principal-value.js +2 -2
- package/src/handlers/completion/resource-value.js +52 -46
- package/src/handlers/completion/statement-block.d.ts +1 -6
- package/src/handlers/completion/statement-block.js +1 -2
- package/src/handlers/completion/statement-key.js +2 -1
- package/src/handlers/diagnostics/action.js +6 -8
- package/src/handlers/hover/action-value.js +20 -10
- package/src/handlers/hover/condition-block.js +4 -8
- package/src/handlers/hover/condition-key.js +10 -7
- package/src/handlers/hover/condition-operator.js +2 -1
- package/src/handlers/hover/effect-value.js +4 -7
- package/src/handlers/hover/index.js +1 -2
- package/src/handlers/hover/principal-block.js +4 -7
- package/src/handlers/hover/principal-type.js +3 -11
- package/src/handlers/hover/principal-typed-value.js +16 -25
- package/src/handlers/hover/resource-value.js +5 -18
- package/src/handlers/hover/statement-key.js +2 -1
- package/src/lib/iam-policy/arn.js +0 -1
- package/src/lib/iam-policy/condition-operators.d.ts +4 -316
- package/src/lib/iam-policy/condition-operators.js +399 -106
- package/src/lib/iam-policy/principals.d.ts +2 -21
- package/src/lib/iam-policy/principals.js +10 -4
- package/src/lib/iam-policy/reference/documentation.d.ts +55 -0
- package/src/lib/iam-policy/reference/documentation.js +171 -0
- package/src/lib/iam-policy/reference/services.d.ts +5 -13
- package/src/lib/iam-policy/reference/services.js +4 -14
- package/src/lib/iam-policy/reference/types.d.ts +21 -11
- package/src/lib/iam-policy/statement-keys.d.ts +2 -2
- package/src/lib/iam-policy/statement-keys.js +64 -112
- package/src/lib/treesitter/yaml.js +26 -2
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
export const conditionBlockAttributes = {
|
|
2
|
+
test: {
|
|
3
|
+
description: 'The condition operator to evaluate (e.g., `StringEquals`, `ArnLike`, `IpAddress`).',
|
|
4
|
+
},
|
|
5
|
+
variable: {
|
|
6
|
+
description: 'The condition key to evaluate (e.g., `aws:SourceIp`, `s3:prefix`).',
|
|
7
|
+
},
|
|
8
|
+
values: {
|
|
9
|
+
description: 'List of values to compare against the condition key.',
|
|
10
|
+
},
|
|
11
|
+
};
|
|
12
|
+
export const effects = {
|
|
13
|
+
Allow: {
|
|
14
|
+
name: 'Allow',
|
|
15
|
+
description: [
|
|
16
|
+
'Grants access to the specified resources and actions.',
|
|
17
|
+
'By default, all requests are implicitly denied.',
|
|
18
|
+
'An `Allow` overrides implicit denies but never overrides an explicit `Deny`.',
|
|
19
|
+
].join('\n'),
|
|
20
|
+
},
|
|
21
|
+
Deny: {
|
|
22
|
+
name: 'Deny',
|
|
23
|
+
description: [
|
|
24
|
+
'Explicitly denies access to the specified resources and actions.',
|
|
25
|
+
'An explicit `Deny` always takes precedence, it overrides any `Allow` statements.',
|
|
26
|
+
].join('\n'),
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
export const principalBlockAttributes = {
|
|
30
|
+
type: {
|
|
31
|
+
name: 'type',
|
|
32
|
+
description: 'The type of principal. Valid values: `*`, `AWS`, `Service`, `Federated`, `CanonicalUser`.',
|
|
33
|
+
},
|
|
34
|
+
identifiers: {
|
|
35
|
+
name: 'identifiers',
|
|
36
|
+
description: 'List of principal identifiers. The format depends on the `type` attribute.',
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
export const principalTypedValues = {
|
|
40
|
+
'*': {
|
|
41
|
+
name: 'Everyone',
|
|
42
|
+
description: 'All principals of this type',
|
|
43
|
+
},
|
|
44
|
+
Service: {
|
|
45
|
+
name: 'AWS Service',
|
|
46
|
+
description: 'Grants a service access to this resource',
|
|
47
|
+
},
|
|
48
|
+
Account: {
|
|
49
|
+
name: 'AWS Account',
|
|
50
|
+
description: 'Grants all entities within an account access to this resource',
|
|
51
|
+
},
|
|
52
|
+
Role: {
|
|
53
|
+
name: 'IAM Role',
|
|
54
|
+
description: 'Grants a specific role access to this resource',
|
|
55
|
+
},
|
|
56
|
+
RoleSession: {
|
|
57
|
+
name: 'Assumed Role Session',
|
|
58
|
+
description: 'Grants a specific role session access to this resource',
|
|
59
|
+
},
|
|
60
|
+
User: {
|
|
61
|
+
name: 'IAM User',
|
|
62
|
+
description: 'Grants a specific user access to this resource',
|
|
63
|
+
},
|
|
64
|
+
FederatedOidc: {
|
|
65
|
+
name: 'Federated OIDC Provider',
|
|
66
|
+
description: 'Grants a specific OIDC IdP access to this resource',
|
|
67
|
+
},
|
|
68
|
+
FederatedSaml: {
|
|
69
|
+
name: 'Federated SAML Provider',
|
|
70
|
+
description: 'Grants a specific SAML IdP access to this resource',
|
|
71
|
+
},
|
|
72
|
+
FederatedIdentity: {
|
|
73
|
+
name: 'Federated Identity',
|
|
74
|
+
description: 'Grants an integrated IdP access to this resource',
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
export function formatStatementElementDocumentation(element) {
|
|
78
|
+
const parts = [];
|
|
79
|
+
parts.push(`**${element.name}**`);
|
|
80
|
+
parts.push(`_${element.description}_`);
|
|
81
|
+
parts.push(`\n**Policy Types**: ${element.policyTypes.join(',')}`);
|
|
82
|
+
return parts.join('\n');
|
|
83
|
+
}
|
|
84
|
+
export function formatActionDocumentation(action) {
|
|
85
|
+
const parts = [];
|
|
86
|
+
parts.push(`**${action.service}:${action.name}**`);
|
|
87
|
+
if (action.description)
|
|
88
|
+
parts.push(`_${action.description}_`);
|
|
89
|
+
if (action.accessLevel)
|
|
90
|
+
parts.push(`\n**Access Level**: _${action.accessLevel}_`);
|
|
91
|
+
if (action.resourceTypes && action.resourceTypes.length > 0) {
|
|
92
|
+
parts.push(`\n**Resource types**`);
|
|
93
|
+
for (const resource of action.resourceTypes) {
|
|
94
|
+
if (resource.required)
|
|
95
|
+
parts.push(`- \`${resource.name}\` _*(required)*_`);
|
|
96
|
+
else
|
|
97
|
+
parts.push(`- \`${resource.name}\``);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
if (action.conditionKeys.length > 0) {
|
|
101
|
+
parts.push(`\n**Condition keys**`);
|
|
102
|
+
for (const conditionKey of action.conditionKeys) {
|
|
103
|
+
parts.push(`- \`${conditionKey}\``);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
if (action.dependentActions && action.dependentActions.length > 0) {
|
|
107
|
+
parts.push(`\n**Dependent actions:**`);
|
|
108
|
+
for (const dependentAction of action.dependentActions) {
|
|
109
|
+
parts.push(`- \`${dependentAction}\``);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return parts.join('\n');
|
|
113
|
+
}
|
|
114
|
+
export function formatResourceDocumentation(resource) {
|
|
115
|
+
const parts = [];
|
|
116
|
+
parts.push(`**${resource.service}/${resource.name}**`);
|
|
117
|
+
if (resource.arnFormats.length > 0) {
|
|
118
|
+
parts.push(`\n**ARN Formats**`);
|
|
119
|
+
for (const conditionKey of resource.conditionKeys) {
|
|
120
|
+
parts.push(`- \`${conditionKey}\``);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
if (resource.conditionKeys.length > 0) {
|
|
124
|
+
parts.push(`\n**Condition Keys**`);
|
|
125
|
+
for (const conditionKey of resource.conditionKeys) {
|
|
126
|
+
parts.push(`- \`${conditionKey}\``);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return parts.join('\n');
|
|
130
|
+
}
|
|
131
|
+
export function formatConditionKeyDocumentation(conditionKey) {
|
|
132
|
+
const parts = [];
|
|
133
|
+
parts.push(`**${conditionKey.name}**`);
|
|
134
|
+
if (conditionKey.description)
|
|
135
|
+
parts.push(`_${conditionKey.description}_`);
|
|
136
|
+
if (conditionKey.types.length > 0)
|
|
137
|
+
parts.push(`\n**Type:** _${conditionKey.types.join(',')}_`);
|
|
138
|
+
if (conditionKey.availability)
|
|
139
|
+
parts.push(`\n**Availability:** _${conditionKey.availability}_`);
|
|
140
|
+
return parts.join('\n');
|
|
141
|
+
}
|
|
142
|
+
export function formatConditionOperatorDocumentation(operator) {
|
|
143
|
+
const parts = [];
|
|
144
|
+
parts.push(`**${operator.name}**`);
|
|
145
|
+
parts.push(`_${operator.description}_`);
|
|
146
|
+
return parts.join('\n');
|
|
147
|
+
}
|
|
148
|
+
export function formatEffectDocumentation(effect) {
|
|
149
|
+
const parts = [];
|
|
150
|
+
parts.push(`**${effect.name}**`);
|
|
151
|
+
parts.push(`_${effect.description}_`);
|
|
152
|
+
return parts.join('\n');
|
|
153
|
+
}
|
|
154
|
+
export function formatPrincipalBlockAttributeDocumentation(attribute) {
|
|
155
|
+
const parts = [];
|
|
156
|
+
parts.push(`**${attribute.name}**`);
|
|
157
|
+
parts.push(`_${attribute.description}_`);
|
|
158
|
+
return parts.join('\n');
|
|
159
|
+
}
|
|
160
|
+
export function formatPrincipalTypeDocumentation(principal) {
|
|
161
|
+
const parts = [];
|
|
162
|
+
parts.push(`**${principal.name}**`);
|
|
163
|
+
parts.push(`_${principal.description}_`);
|
|
164
|
+
return parts.join('\n');
|
|
165
|
+
}
|
|
166
|
+
export function formatPrincipalTypedValueDocumentation(principal) {
|
|
167
|
+
const parts = [];
|
|
168
|
+
parts.push(`**${principal.name}**`);
|
|
169
|
+
parts.push(`_${principal.description}_`);
|
|
170
|
+
return parts.join('\n');
|
|
171
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type ArnParts } from '../arn.ts';
|
|
2
|
-
import type { Action, ConditionKey,
|
|
2
|
+
import type { Action, ConditionKey, ResourceDef, ServiceData } from './types.ts';
|
|
3
3
|
export declare class ServiceReference {
|
|
4
4
|
#private;
|
|
5
5
|
static getServiceData(service: string): ServiceData | undefined;
|
|
@@ -7,18 +7,10 @@ export declare class ServiceReference {
|
|
|
7
7
|
static getAllActions(): Array<string>;
|
|
8
8
|
static getAllServices(): Array<string>;
|
|
9
9
|
static getActionsForService(service: string): Array<Action>;
|
|
10
|
-
static getConditionKeysForActions(actions: string[]): Array<
|
|
11
|
-
|
|
12
|
-
types: string[];
|
|
13
|
-
}>;
|
|
14
|
-
static getGlobalConditionKeys(): Array<GlobalConditionKey>;
|
|
10
|
+
static getConditionKeysForActions(actions: string[]): Array<ConditionKey>;
|
|
11
|
+
static getGlobalConditionKeys(): Array<ConditionKey>;
|
|
15
12
|
static getAction(action: string): Action | undefined;
|
|
16
13
|
static getConditionKey(service: string, keyName: string): ConditionKey | undefined;
|
|
17
|
-
static getResources(arn: ArnParts): ResourceDef
|
|
18
|
-
static getResourcesForActions(actions: string
|
|
19
|
-
service: string;
|
|
20
|
-
name: string;
|
|
21
|
-
arn: string;
|
|
22
|
-
conditionKeys: Array<string>;
|
|
23
|
-
}>;
|
|
14
|
+
static getResources(arn: ArnParts): Array<ResourceDef>;
|
|
15
|
+
static getResourcesForActions(actions: Array<string>): Array<ResourceDef>;
|
|
24
16
|
}
|
|
@@ -70,15 +70,12 @@ export class ServiceReference {
|
|
|
70
70
|
const actionDef = serviceData.actions[actionName];
|
|
71
71
|
if (actionDef?.conditionKeys) {
|
|
72
72
|
for (const keyName of actionDef.conditionKeys) {
|
|
73
|
-
|
|
74
|
-
const keyDef = serviceData.conditionKeys[keyName];
|
|
75
|
-
keys.set(keyName, keyDef?.types ?? []);
|
|
76
|
-
}
|
|
73
|
+
keys.set(keyName, serviceData.conditionKeys[keyName]);
|
|
77
74
|
}
|
|
78
75
|
}
|
|
79
76
|
}
|
|
80
77
|
const sorted = [...keys.entries()].sort((a, b) => a[0].localeCompare(b[0]));
|
|
81
|
-
return sorted.map(([
|
|
78
|
+
return sorted.map(([_name, key]) => key);
|
|
82
79
|
}
|
|
83
80
|
static getGlobalConditionKeys() {
|
|
84
81
|
if (!ServiceReference.#globalConditionKeys) {
|
|
@@ -116,7 +113,7 @@ export class ServiceReference {
|
|
|
116
113
|
return matches;
|
|
117
114
|
}
|
|
118
115
|
static getResourcesForActions(actions) {
|
|
119
|
-
const resources =
|
|
116
|
+
const resources = [];
|
|
120
117
|
for (const action of actions) {
|
|
121
118
|
const [service, actionName] = action.split(':');
|
|
122
119
|
const serviceData = ServiceReference.getServiceData(service);
|
|
@@ -128,14 +125,7 @@ export class ServiceReference {
|
|
|
128
125
|
for (const actionResource of actionDef.resources) {
|
|
129
126
|
const resourceDef = serviceData.resources.find((r) => r.name === actionResource.name);
|
|
130
127
|
if (resourceDef) {
|
|
131
|
-
|
|
132
|
-
resources.set(arn, {
|
|
133
|
-
service,
|
|
134
|
-
name: resourceDef.name,
|
|
135
|
-
arn,
|
|
136
|
-
conditionKeys: resourceDef.conditionKeys,
|
|
137
|
-
});
|
|
138
|
-
}
|
|
128
|
+
resources.push(resourceDef);
|
|
139
129
|
}
|
|
140
130
|
}
|
|
141
131
|
}
|
|
@@ -2,12 +2,6 @@ export type Services = Array<{
|
|
|
2
2
|
service: string;
|
|
3
3
|
url: string;
|
|
4
4
|
}>;
|
|
5
|
-
export type GlobalConditionKey = {
|
|
6
|
-
name: string;
|
|
7
|
-
valueType: 'single' | 'multi';
|
|
8
|
-
availability: string;
|
|
9
|
-
description: string;
|
|
10
|
-
};
|
|
11
5
|
export type RawReference = {
|
|
12
6
|
Name: string;
|
|
13
7
|
Version: string;
|
|
@@ -45,11 +39,7 @@ export type ServiceData = {
|
|
|
45
39
|
name: string;
|
|
46
40
|
url?: string;
|
|
47
41
|
actions: Record<string, Action>;
|
|
48
|
-
resources: Array<
|
|
49
|
-
name: string;
|
|
50
|
-
arnFormats: Array<string>;
|
|
51
|
-
conditionKeys: Array<string>;
|
|
52
|
-
}>;
|
|
42
|
+
resources: Array<ResourceDef>;
|
|
53
43
|
conditionKeys: Record<string, ConditionKey>;
|
|
54
44
|
};
|
|
55
45
|
export type Action = {
|
|
@@ -71,11 +61,31 @@ export type Action = {
|
|
|
71
61
|
iamUrl?: string;
|
|
72
62
|
};
|
|
73
63
|
export type ResourceDef = {
|
|
64
|
+
service: string;
|
|
74
65
|
name: string;
|
|
75
66
|
arnFormats: Array<string>;
|
|
76
67
|
conditionKeys: Array<string>;
|
|
77
68
|
};
|
|
78
69
|
export type ConditionKey = {
|
|
70
|
+
name: string;
|
|
79
71
|
types: Array<string>;
|
|
80
72
|
description?: string;
|
|
73
|
+
availability?: string;
|
|
74
|
+
};
|
|
75
|
+
export type Effect = {
|
|
76
|
+
name: string;
|
|
77
|
+
description: string;
|
|
78
|
+
};
|
|
79
|
+
export type PrincipalBlockAttribute = {
|
|
80
|
+
name: string;
|
|
81
|
+
description: string;
|
|
82
|
+
};
|
|
83
|
+
export type PrincipalType = {
|
|
84
|
+
name: string;
|
|
85
|
+
description: string;
|
|
86
|
+
patterns: Array<string>;
|
|
87
|
+
};
|
|
88
|
+
export type PrincipalTypedValue = {
|
|
89
|
+
name: string;
|
|
90
|
+
description: string;
|
|
81
91
|
};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
type PolicyElement = {
|
|
1
|
+
export type PolicyElement = {
|
|
2
|
+
name: string;
|
|
2
3
|
policyTypes: Array<'identity' | 'resource'>;
|
|
3
4
|
description: string;
|
|
4
5
|
group: string;
|
|
5
6
|
hclKey: string;
|
|
6
7
|
};
|
|
7
8
|
export declare const StatementKeys: Record<string, PolicyElement>;
|
|
8
|
-
export {};
|
|
@@ -1,158 +1,110 @@
|
|
|
1
1
|
export const StatementKeys = {
|
|
2
2
|
Sid: {
|
|
3
|
+
name: 'Sid',
|
|
3
4
|
policyTypes: ['identity', 'resource'],
|
|
4
|
-
description:
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
The
|
|
8
|
-
It may only contain ASCII uppercase letters (A-Z), lowercase letters (a-z), and numbers (0-9).
|
|
9
|
-
|
|
10
|
-
In services that support an \`Id\` element (such as SQS and SNS), the \`Sid\` serves as a sub-ID of the policy document's \`Id\`.
|
|
11
|
-
These services may require \`Sid\` and enforce additional uniqueness constraints — consult the service-specific documentation.
|
|
12
|
-
|
|
13
|
-
> **Note:** The IAM API does not expose the \`Sid\`.
|
|
14
|
-
> You cannot retrieve a specific statement by its ID.`,
|
|
5
|
+
description: [
|
|
6
|
+
'An optional identifier for a policy statement.',
|
|
7
|
+
'Use it as a descriptive label to distinguish statements within a policy.',
|
|
8
|
+
'The `Sid` value must be unique within a policy document.',
|
|
9
|
+
'It may only contain ASCII uppercase letters (A-Z), lowercase letters (a-z), and numbers (0-9).',
|
|
10
|
+
].join('\n'),
|
|
15
11
|
hclKey: 'sid',
|
|
16
12
|
group: 'sid',
|
|
17
13
|
},
|
|
18
14
|
Effect: {
|
|
15
|
+
name: 'Effect',
|
|
19
16
|
policyTypes: ['identity', 'resource'],
|
|
20
|
-
description:
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
By default, access to resources is implicitly denied.
|
|
24
|
-
Set
|
|
25
|
-
|
|
17
|
+
description: [
|
|
18
|
+
'A required element that specifies whether the statement allows or explicitly denies access.',
|
|
19
|
+
'Valid values are `Allow` and `Deny` (case-sensitive).',
|
|
20
|
+
'By default, access to resources is implicitly denied.',
|
|
21
|
+
'Set `Effect` to `Allow` to grant access and set `Effect` to `Deny` to explicitly deny access.',
|
|
22
|
+
].join('\n'),
|
|
26
23
|
hclKey: 'effect',
|
|
27
24
|
group: 'effect',
|
|
28
25
|
},
|
|
29
26
|
Principal: {
|
|
27
|
+
name: 'Principal',
|
|
30
28
|
policyTypes: ['resource'],
|
|
31
|
-
description:
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
- **AWS account** — \`{ "AWS": "arn:aws:iam::123456789012:root" }\` or \`{ "AWS": "123456789012" }\`
|
|
38
|
-
- **IAM role** — \`{ "AWS": "arn:aws:iam::123456789012:role/role-name" }\`
|
|
39
|
-
- **IAM user** — \`{ "AWS": "arn:aws:iam::123456789012:user/user-name" }\`
|
|
40
|
-
- **AWS service** — \`{ "Service": "ecs.amazonaws.com" }\`
|
|
41
|
-
- **Federated (OIDC/SAML)** — \`{ "Federated": "cognito-identity.amazonaws.com" }\` or a SAML provider ARN
|
|
42
|
-
- **Canonical user** — \`{ "CanonicalUser": "64-char-hex-id" }\` (S3-specific, equivalent to an account ID)
|
|
43
|
-
- **All principals** — \`"*"\` or \`{ "AWS": "*" }\`
|
|
44
|
-
|
|
45
|
-
Use arrays to specify multiple principals of the same type.
|
|
46
|
-
Multiple principals are evaluated as a logical OR.
|
|
47
|
-
|
|
48
|
-
> **Warning:** Using \`"Principal": "*"\` with \`"Effect": "Allow"\` grants public access.
|
|
49
|
-
> Always scope with a \`Condition\` element unless public access is intended.
|
|
50
|
-
|
|
51
|
-
> **Note:** IAM resolves role and user ARNs in trust policies to unique principal IDs.
|
|
52
|
-
> If you delete and recreate the role or user, the trust relationship breaks.
|
|
53
|
-
> Use the \`aws:PrincipalArn\` condition key to avoid this.`,
|
|
29
|
+
description: [
|
|
30
|
+
'Specifies the principal that is allowed or denied access to a resource.',
|
|
31
|
+
'Required in resource-based policies, but cannot be used in identity-based policies.',
|
|
32
|
+
'The value can be an AWS account, IAM user, IAM role, federated identity, AWS service, or canonical user.',
|
|
33
|
+
].join('\n'),
|
|
54
34
|
group: 'principal',
|
|
55
35
|
hclKey: 'principals',
|
|
56
36
|
},
|
|
57
37
|
NotPrincipal: {
|
|
38
|
+
name: 'NotPrincipal',
|
|
58
39
|
policyTypes: ['resource'],
|
|
59
|
-
description:
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
When specifying an IAM user or role, you must also include the account ARN.
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
> **Warning:** Do not use \`NotPrincipal\` with \`Deny\` for principals that have a permissions boundary attached.
|
|
67
|
-
> The \`NotPrincipal\` element will always deny those principals regardless of the values specified.
|
|
68
|
-
|
|
69
|
-
> **Recommended alternative:** Use \`"Principal": "*"\` with a \`Condition\` using \`ArnNotEquals\` on \`aws:PrincipalArn\` (or \`StringNotEquals\` on \`aws:PrincipalServiceName\` for services).
|
|
70
|
-
> AWS does not recommend \`NotPrincipal\` for new resource-based policies due to the difficulty of troubleshooting interactions across multiple policy types.`,
|
|
40
|
+
description: [
|
|
41
|
+
'Matches every principal *except* the ones specified.',
|
|
42
|
+
'Must be used with `"Effect": "Deny"`, using it with `"Effect": "Allow"` is not supported.',
|
|
43
|
+
'Only valid in resource-based policies, it is not supported in identity-based policies.',
|
|
44
|
+
'When specifying an IAM user or role, you must also include the account ARN.',
|
|
45
|
+
].join('\n'),
|
|
71
46
|
group: 'principal',
|
|
72
47
|
hclKey: 'not_principals',
|
|
73
48
|
},
|
|
74
49
|
Action: {
|
|
50
|
+
name: 'Action',
|
|
75
51
|
policyTypes: ['identity', 'resource'],
|
|
76
|
-
description:
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
Use an array to specify multiple actions.
|
|
82
|
-
|
|
83
|
-
Wildcards are supported:
|
|
84
|
-
- \`*\` matches any combination of characters (e.g. \`s3:*\` for all S3 actions, \`iam:*AccessKey*\` for all access key actions)
|
|
85
|
-
- \`?\` matches any single character`,
|
|
52
|
+
description: [
|
|
53
|
+
'Specifies the actions that the statement allows or denies.',
|
|
54
|
+
'Actions use the format `service:action` (e.g. `s3:GetObject`, `iam:CreateUser`).',
|
|
55
|
+
'Action names are case-insensitive.',
|
|
56
|
+
].join('\n'),
|
|
86
57
|
group: 'action',
|
|
87
58
|
hclKey: 'actions',
|
|
88
59
|
},
|
|
89
60
|
NotAction: {
|
|
61
|
+
name: 'NotAction',
|
|
90
62
|
policyTypes: ['identity', 'resource'],
|
|
91
|
-
description:
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
With
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
> **Warning:** \`NotAction\` with \`"Effect": "Allow"\` can grant more permissions than intended, since it allows all actions not explicitly excluded — including actions in other services.
|
|
99
|
-
> Prefer using \`NotAction\` with \`"Effect": "Deny"\` to restrict access while still requiring explicit allows elsewhere.`,
|
|
63
|
+
description: [
|
|
64
|
+
'Matches every action *except* the ones specified.',
|
|
65
|
+
'With `"Effect": "Allow"`, grants access to all applicable actions except those listed.',
|
|
66
|
+
'With `"Effect": "Deny"`, denies all applicable actions except those listed.',
|
|
67
|
+
'The `Resource` element determines which actions and services are applicable.',
|
|
68
|
+
].join('\n'),
|
|
100
69
|
group: 'action',
|
|
101
70
|
hclKey: 'not_actions',
|
|
102
71
|
},
|
|
103
72
|
Resource: {
|
|
73
|
+
name: 'Resource',
|
|
104
74
|
policyTypes: ['identity', 'resource'],
|
|
105
|
-
description:
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
Resources are identified by ARN (e.g.
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
Wildcards are supported within ARNs:
|
|
113
|
-
|
|
114
|
-
- \`*\` matches any combination of characters, including \`/\`
|
|
115
|
-
- \`?\` matches any single character
|
|
116
|
-
- Wildcards cannot be used in the service segment of an ARN
|
|
117
|
-
|
|
118
|
-
Some actions do not support resource-level permissions.
|
|
119
|
-
In those cases, use \`"Resource": "*"\` to apply the statement to all resources.
|
|
120
|
-
|
|
121
|
-
Policy variables (e.g. \`\${aws:username}\`) can be used in the resource-specific portion of the ARN.`,
|
|
75
|
+
description: [
|
|
76
|
+
'Specifies the object or objects that the statement applies to.',
|
|
77
|
+
'Each statement must include either `Resource` or `NotResource`.',
|
|
78
|
+
'Resources are identified by ARN (e.g. `arn:aws:s3:::my-bucket/*`).',
|
|
79
|
+
'Some actions do not support resource-level permissions.',
|
|
80
|
+
'In those cases, use `"Resource": "*"` to apply the statement to all resources.',
|
|
81
|
+
].join('\n'),
|
|
122
82
|
group: 'resource',
|
|
123
83
|
hclKey: 'resources',
|
|
124
84
|
},
|
|
125
85
|
NotResource: {
|
|
86
|
+
name: 'NotResource',
|
|
126
87
|
policyTypes: ['identity', 'resource'],
|
|
127
|
-
description:
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
With
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
> **Warning:** \`NotResource\` with \`"Effect": "Allow"\` can grant far more permissions than intended — including actions across other services and resources.
|
|
134
|
-
> Never combine \`"Effect": "Allow"\`, \`"Action": "*"\`, and \`NotResource\`, as this grants access to nearly everything in the account.
|
|
135
|
-
> Prefer using \`NotResource\` with \`"Effect": "Deny"\`.`,
|
|
88
|
+
description: [
|
|
89
|
+
'Matches every resource *except* the ones specified.',
|
|
90
|
+
'With `"Effect": "Deny"`, denies access to all resources except those listed.',
|
|
91
|
+
'With `"Effect": "Allow"`, grants access to all resources except those listed.',
|
|
92
|
+
].join('\n'),
|
|
136
93
|
group: 'resource',
|
|
137
94
|
hclKey: 'not_resources',
|
|
138
95
|
},
|
|
139
96
|
Condition: {
|
|
97
|
+
name: 'Condition',
|
|
140
98
|
policyTypes: ['identity', 'resource'],
|
|
141
|
-
description:
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
When multiple values are specified for a single key, they are evaluated as **OR**.
|
|
152
|
-
When multiple keys or operators are specified, they are evaluated as **AND**.
|
|
153
|
-
|
|
154
|
-
If a condition key is not present in the request context, it does not match — except when using \`ForAllValues\`, which may return true for a missing key.
|
|
155
|
-
Use the \`Null\` condition operator to explicitly check whether a key exists.`,
|
|
99
|
+
description: [
|
|
100
|
+
'An optional element that specifies conditions under which the statement is in effect.',
|
|
101
|
+
'Condition keys are either **global** (available across all services) or **service-specific**.',
|
|
102
|
+
'Condition key names are case-insensitive.',
|
|
103
|
+
'Values are case-sensitive unless using a case-insensitive operator like `StringEqualsIgnoreCase`.',
|
|
104
|
+
'When multiple values are specified for a single key, they are evaluated as **OR**.',
|
|
105
|
+
'When multiple keys or operators are specified, they are evaluated as **AND**.',
|
|
106
|
+
'If a condition key is not present in the request context, it does not match, except when using `ForAllValues`.',
|
|
107
|
+
].join('\n'),
|
|
156
108
|
hclKey: 'condition',
|
|
157
109
|
group: 'condition',
|
|
158
110
|
},
|
|
@@ -431,7 +431,7 @@ export class TreeYaml extends TreeBase {
|
|
|
431
431
|
// a mapping {s3: null} instead of a scalar). If the mapping has one pair with
|
|
432
432
|
// no value and sits inside a block_sequence_item, collapse it: treat the key
|
|
433
433
|
// text + ":" as a partial value and skip past the mapping.
|
|
434
|
-
if (this.#isColonInducedMapping(current)) {
|
|
434
|
+
if (this.#isColonInducedMapping(current) || this.#isColonInducedMappingInPairValue(current, position)) {
|
|
435
435
|
const pair = current.namedChildren.find((child) => child.type === 'block_mapping_pair');
|
|
436
436
|
const keyText = pair ? this.#getPairKeyText(pair) : null;
|
|
437
437
|
if (keyText) {
|
|
@@ -482,7 +482,9 @@ export class TreeYaml extends TreeBase {
|
|
|
482
482
|
// When nodeBefore lands on the ":" inside a colon-induced mapping, we enter
|
|
483
483
|
// via the inner pair (setting role='value', keys=['s3']). When we reach the
|
|
484
484
|
// parent mapping, undo that contribution and collapse to colonPartial.
|
|
485
|
-
if (current.type === 'block_mapping' &&
|
|
485
|
+
if (current.type === 'block_mapping' &&
|
|
486
|
+
role !== null &&
|
|
487
|
+
(this.#isColonInducedMapping(current) || this.#isColonInducedMappingInPairValue(current, position))) {
|
|
486
488
|
const pair = current.namedChildren.find((child) => child.type === 'block_mapping_pair');
|
|
487
489
|
const keyText = pair ? this.#getPairKeyText(pair) : null;
|
|
488
490
|
if (keyText && keys.length > 0 && keys[0] === keyText) {
|
|
@@ -649,6 +651,28 @@ export class TreeYaml extends TreeBase {
|
|
|
649
651
|
parent = parent.parent;
|
|
650
652
|
return parent?.type === 'block_sequence_item';
|
|
651
653
|
}
|
|
654
|
+
/**
|
|
655
|
+
* Detect a colon-induced mapping inside a mapping pair value (e.g., "s3:" under
|
|
656
|
+
* "StringEquals:" is parsed as a nested mapping {s3: null} instead of a scalar value).
|
|
657
|
+
* Only matches when the cursor is on the pair's line with no space after the colon
|
|
658
|
+
* (position at or before the pair end). When there IS a space (cursor past pair end),
|
|
659
|
+
* the existing pairOnLine check handles it as a legitimate key-value context.
|
|
660
|
+
*/
|
|
661
|
+
#isColonInducedMappingInPairValue(mapping, position) {
|
|
662
|
+
const pairs = mapping.namedChildren.filter((child) => child.type === 'block_mapping_pair');
|
|
663
|
+
if (pairs.length !== 1)
|
|
664
|
+
return false;
|
|
665
|
+
if (pairs[0].namedChildren.length > 1)
|
|
666
|
+
return false;
|
|
667
|
+
if (pairs[0].startPosition.row !== position.line)
|
|
668
|
+
return false;
|
|
669
|
+
if (position.character > pairs[0].endPosition.column)
|
|
670
|
+
return false;
|
|
671
|
+
let parent = mapping.parent;
|
|
672
|
+
while (parent && parent.type === 'block_node')
|
|
673
|
+
parent = parent.parent;
|
|
674
|
+
return parent?.type === 'block_mapping_pair';
|
|
675
|
+
}
|
|
652
676
|
/**
|
|
653
677
|
* Walk up, skipping block_node wrappers.
|
|
654
678
|
*/
|