dagster-aws 0.27.16__tar.gz → 0.28.1__tar.gz

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.
Files changed (74) hide show
  1. {dagster_aws-0.27.16/dagster_aws.egg-info → dagster_aws-0.28.1}/PKG-INFO +2 -2
  2. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/ecs/launcher.py +32 -1
  3. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/pipes/context_injectors.py +6 -5
  4. dagster_aws-0.28.1/dagster_aws/version.py +1 -0
  5. {dagster_aws-0.27.16 → dagster_aws-0.28.1/dagster_aws.egg-info}/PKG-INFO +2 -2
  6. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws.egg-info/requires.txt +1 -1
  7. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/setup.py +1 -1
  8. dagster_aws-0.27.16/dagster_aws/version.py +0 -1
  9. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/LICENSE +0 -0
  10. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/MANIFEST.in +0 -0
  11. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/README.md +0 -0
  12. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/__init__.py +0 -0
  13. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/_stubs.py +0 -0
  14. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/athena/__init__.py +0 -0
  15. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/athena/resources.py +0 -0
  16. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/cloudwatch/__init__.py +0 -0
  17. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/cloudwatch/loggers.py +0 -0
  18. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/ecr/__init__.py +0 -0
  19. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/ecr/resources.py +0 -0
  20. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/ecs/__init__.py +0 -0
  21. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/ecs/container_context.py +0 -0
  22. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/ecs/executor.py +0 -0
  23. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/ecs/tasks.py +0 -0
  24. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/ecs/test_utils.py +0 -0
  25. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/ecs/utils.py +0 -0
  26. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/emr/__init__.py +0 -0
  27. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/emr/configs.py +0 -0
  28. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/emr/configs_spark.py +0 -0
  29. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/emr/emr.py +0 -0
  30. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/emr/emr_step_main.py +0 -0
  31. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/emr/main.py.template +0 -0
  32. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/emr/pyspark_step_launcher.py +0 -0
  33. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/emr/types.py +0 -0
  34. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/emr/utils.py +0 -0
  35. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/pipes/__init__.py +0 -0
  36. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/pipes/clients/__init__.py +0 -0
  37. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/pipes/clients/ecs.py +0 -0
  38. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/pipes/clients/emr.py +0 -0
  39. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/pipes/clients/emr_containers.py +0 -0
  40. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/pipes/clients/emr_serverless.py +0 -0
  41. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/pipes/clients/glue.py +0 -0
  42. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/pipes/clients/lambda_.py +0 -0
  43. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/pipes/clients/utils.py +0 -0
  44. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/pipes/message_readers.py +0 -0
  45. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/py.typed +0 -0
  46. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/rds/__init__.py +0 -0
  47. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/rds/resources.py +0 -0
  48. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/redshift/__init__.py +0 -0
  49. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/redshift/resources.py +0 -0
  50. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/s3/__init__.py +0 -0
  51. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/s3/compute_log_manager.py +0 -0
  52. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/s3/file_manager.py +0 -0
  53. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/s3/io_manager.py +0 -0
  54. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/s3/ops.py +0 -0
  55. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/s3/resources.py +0 -0
  56. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/s3/s3_fake_resource.py +0 -0
  57. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/s3/sensor.py +0 -0
  58. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/s3/utils.py +0 -0
  59. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/secretsmanager/__init__.py +0 -0
  60. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/secretsmanager/resources.py +0 -0
  61. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/secretsmanager/secrets.py +0 -0
  62. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/ssm/__init__.py +0 -0
  63. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/ssm/parameters.py +0 -0
  64. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/ssm/resources.py +0 -0
  65. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/utils/__init__.py +0 -0
  66. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/utils/mrjob/__init__.py +0 -0
  67. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/utils/mrjob/log4j.py +0 -0
  68. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/utils/mrjob/retry.py +0 -0
  69. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws/utils/mrjob/utils.py +0 -0
  70. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws.egg-info/SOURCES.txt +0 -0
  71. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws.egg-info/dependency_links.txt +0 -0
  72. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws.egg-info/not-zip-safe +0 -0
  73. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/dagster_aws.egg-info/top_level.txt +0 -0
  74. {dagster_aws-0.27.16 → dagster_aws-0.28.1}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dagster-aws
3
- Version: 0.27.16
3
+ Version: 0.28.1
4
4
  Summary: Package for AWS-specific Dagster framework solid and resource components.
5
5
  Home-page: https://github.com/dagster-io/dagster/tree/master/python_modules/libraries/dagster-aws
6
6
  Author: Dagster Labs
@@ -16,7 +16,7 @@ Classifier: Operating System :: OS Independent
16
16
  Requires-Python: >=3.9,<3.14
17
17
  License-File: LICENSE
18
18
  Requires-Dist: boto3
19
- Requires-Dist: dagster==1.11.16
19
+ Requires-Dist: dagster==1.12.1
20
20
  Requires-Dist: packaging
21
21
  Requires-Dist: requests
22
22
  Provides-Extra: redshift
@@ -30,11 +30,12 @@ from dagster._core.launcher.base import (
30
30
  WorkerStatus,
31
31
  )
32
32
  from dagster._core.storage.dagster_run import DagsterRun
33
- from dagster._core.storage.tags import RUN_WORKER_ID_TAG
33
+ from dagster._core.storage.tags import HIDDEN_TAG_PREFIX, RUN_WORKER_ID_TAG
34
34
  from dagster._grpc.types import ExecuteRunArgs
35
35
  from dagster._serdes import ConfigurableClass
36
36
  from dagster._serdes.config_class import ConfigurableClassData
37
37
  from dagster._utils.backoff import backoff
38
+ from dagster._utils.tags import get_boolean_tag_value
38
39
  from typing_extensions import Self
39
40
 
40
41
  from dagster_aws.ecs.container_context import (
@@ -855,6 +856,28 @@ class EcsRunLauncher(RunLauncher[T_DagsterInstance], ConfigurableClass):
855
856
  task.get("stoppedReason", "")
856
857
  )
857
858
 
859
+ def _add_eni_id_tags(self, run: DagsterRun, task: dict[str, Any]):
860
+ attachments = task.get("attachments", [])
861
+ eni_ids = {}
862
+ eni_count = 0
863
+ for attachment in attachments:
864
+ if attachment.get("type") == "ElasticNetworkInterface":
865
+ details = {d["name"]: d["value"] for d in attachment.get("details", [])}
866
+
867
+ if "networkInterfaceId" in details:
868
+ if eni_count == 0:
869
+ eni_ids[f"{HIDDEN_TAG_PREFIX}eni_id"] = details["networkInterfaceId"]
870
+ else:
871
+ eni_ids[f"{HIDDEN_TAG_PREFIX}eni_id_{eni_count}"] = details[
872
+ "networkInterfaceId"
873
+ ]
874
+ eni_count += 1
875
+ self._instance.add_run_tags(run.run_id, eni_ids)
876
+ if eni_count > 0:
877
+ logging.info(f"Added {eni_count} ENI ID tags for run {run.run_id}: {eni_ids}")
878
+ else:
879
+ logging.warning(f"No ENI IDs found for run {run.run_id}")
880
+
858
881
  def check_run_worker_health(self, run: DagsterRun):
859
882
  run_worker_id = run.tags.get(RUN_WORKER_ID_TAG)
860
883
 
@@ -870,6 +893,14 @@ class EcsRunLauncher(RunLauncher[T_DagsterInstance], ConfigurableClass):
870
893
 
871
894
  t = tasks[0]
872
895
 
896
+ if get_boolean_tag_value(os.getenv("DAGSTER_AWS_ENI_TAGGING_ENABLED")) and not run.tags.get(
897
+ f"{HIDDEN_TAG_PREFIX}eni_id"
898
+ ):
899
+ try:
900
+ self._add_eni_id_tags(run, t)
901
+ except Exception:
902
+ logging.exception(f"Error adding ENI ID tags for run {run.run_id}")
903
+
873
904
  if t.get("lastStatus") in RUNNING_STATUSES:
874
905
  return CheckRunHealthResult(WorkerStatus.RUNNING, run_worker_id=run_worker_id)
875
906
  elif t.get("lastStatus") in STOPPED_STATUSES:
@@ -4,15 +4,15 @@ import random
4
4
  import string
5
5
  from collections.abc import Iterator
6
6
  from contextlib import contextmanager
7
- from typing import TYPE_CHECKING
7
+ from typing import TYPE_CHECKING, Optional
8
8
 
9
- import boto3
10
9
  import dagster._check as check
11
10
  from dagster._core.pipes.client import PipesContextInjector, PipesParams
12
11
  from dagster._core.pipes.utils import PipesEnvContextInjector
13
12
 
14
13
  if TYPE_CHECKING:
15
14
  from dagster_pipes import PipesContextData
15
+ from mypy_boto3_s3 import S3Client
16
16
 
17
17
  _CONTEXT_FILENAME = "context.json"
18
18
 
@@ -22,20 +22,21 @@ class PipesS3ContextInjector(PipesContextInjector):
22
22
 
23
23
  Args:
24
24
  bucket (str): The S3 bucket to write to.
25
- client (boto3.client): A boto3 client to use to write to S3.
25
+ client (S3Client): A boto3 client to use to write to S3.
26
26
  key_prefix (Optional[str]): An optional prefix to use for the S3 key. Defaults to a random
27
27
  string.
28
28
 
29
29
  """
30
30
 
31
- def __init__(self, *, bucket: str, client: boto3.client): # pyright: ignore (reportGeneralTypeIssues)
31
+ def __init__(self, *, bucket: str, client: "S3Client", key_prefix: Optional[str] = None):
32
32
  super().__init__()
33
33
  self.bucket = check.str_param(bucket, "bucket")
34
34
  self.client = client
35
+ self.key_prefix = key_prefix
35
36
 
36
37
  @contextmanager
37
38
  def inject_context(self, context: "PipesContextData") -> Iterator[PipesParams]: # pyright: ignore[reportIncompatibleMethodOverride]
38
- key_prefix = "".join(random.choices(string.ascii_letters, k=30))
39
+ key_prefix = f"{self.key_prefix or ''}{''.join(random.choices(string.ascii_letters, k=30))}"
39
40
  key = os.path.join(key_prefix, _CONTEXT_FILENAME)
40
41
  self.client.put_object(
41
42
  Body=json.dumps(context).encode("utf-8"), Bucket=self.bucket, Key=key
@@ -0,0 +1 @@
1
+ __version__ = "0.28.1"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dagster-aws
3
- Version: 0.27.16
3
+ Version: 0.28.1
4
4
  Summary: Package for AWS-specific Dagster framework solid and resource components.
5
5
  Home-page: https://github.com/dagster-io/dagster/tree/master/python_modules/libraries/dagster-aws
6
6
  Author: Dagster Labs
@@ -16,7 +16,7 @@ Classifier: Operating System :: OS Independent
16
16
  Requires-Python: >=3.9,<3.14
17
17
  License-File: LICENSE
18
18
  Requires-Dist: boto3
19
- Requires-Dist: dagster==1.11.16
19
+ Requires-Dist: dagster==1.12.1
20
20
  Requires-Dist: packaging
21
21
  Requires-Dist: requests
22
22
  Provides-Extra: redshift
@@ -1,5 +1,5 @@
1
1
  boto3
2
- dagster==1.11.16
2
+ dagster==1.12.1
3
3
  packaging
4
4
  requests
5
5
 
@@ -36,7 +36,7 @@ setup(
36
36
  python_requires=">=3.9,<3.14",
37
37
  install_requires=[
38
38
  "boto3",
39
- "dagster==1.11.16",
39
+ "dagster==1.12.1",
40
40
  "packaging",
41
41
  "requests",
42
42
  ],
@@ -1 +0,0 @@
1
- __version__ = "0.27.16"
File without changes
File without changes
File without changes
File without changes